內大2018專碩4
輸入整數N(2<N<10),再輸入N*N方陣中的全部數字,計算每列元素最大值之和,並輸出。例如輸入整數4,再輸入方陣
1 2 3 4
5 6 7 2
6 7 8 8
7 6 4 1
每列最大值之和爲:7+7+8+8 =30。
思路:
- 用Scnner獲取鍵盤輸入
- 定義一個ArrayList small,存儲單列數據
- 定義一個ArrayList<ArrayList> big ,存儲方陣的數據,small爲big的元素
- 定義一個input方法獲取方陣輸入
- 定義一個getSum求方陣每列最大值之和
完整代碼如下↓↓↓
package neida;
import java.util.ArrayList;
import java.util.Scanner;
public class ArrayListTest {
public static void main(String[] args) {
System.out.println("請輸入整數N (2<N<10) :");
Scanner scan = new Scanner(System.in);
int Num = scan.nextInt();
if (Num<10 && Num>2){
getSum(Num);
}else {
System.out.println("輸入的數字不在要求範圍內");
}
}
//定義一個獲取數字方陣內容的方法
public static ArrayList input(int firstNum){
int Num = firstNum;
Scanner scan = new Scanner(System.in);
//定義一個Arraylist 存儲 每列的數據
ArrayList small = new ArrayList();
//定義一個元素是Arraylist的ArrayList 存儲所有的數據
ArrayList<ArrayList> big = new ArrayList<>();
for (int i=0;i<Num;i++){
for(int n=0;n<Num;n++){
System.out.println("請輸入方陣的第"+i+"列數字,每輸入一個數字以回車結束:");
int num = scan.nextInt();
small.add(num);
}
// 將small的值克隆到big,如果直接用big=small,則當small變化時,big也會變化
big.add((ArrayList)small.clone());
small.clear();
}
scan.close();
return big;
}
//定義一個獲取最大值之和的方法
public static void getSum(int number) {
int Num = number;
ArrayList<ArrayList> mylist = input(Num);
int sum = 0;
int tmp = 0;
int Max = 0;
// 增強型遍歷
for (ArrayList L : mylist){
for (int i =0 ; i < Num ; i ++ ){
//L.get(i)得到的是一個object類型,不是數字,需要轉換爲int型。
tmp = Integer.parseInt(L.get(i).toString());
//求每列的最大值
if (tmp >= Max){
Max = tmp;
}
}
//累加每列最大值
sum = Max + sum ;
}
System.out.println("每列最大值之和爲:"+ sum);
}
}