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);
    }
}

 

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