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