ArrayList操作:輸入N*N方陣中的全部數字,計算每列元素最大值之和並輸出

內大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。

 

思路:

  1. 用Scnner獲取鍵盤輸入
  2. 定義一個ArrayList  small,存儲單列數據
  3. 定義一個ArrayList<ArrayList>  big ,存儲方陣的數據,small爲big的元素
  4. 定義一個input方法獲取方陣輸入
  5. 定義一個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);
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章