实施一种方法/函数,该方法/函数跨行(从左到右或从右到左)或列(从上到下或从下到上)生成运行总和runningSum2DArray(int [] []数组,int dir)
方法输入:一个4x4二维int数组和一个整数(分别为1、2、3或4分别代表左,右,上,下)。
输出:根据方向生成运行总和后的修改数组。
例如:如果该方法的输入与早期的2D数组相同,则
10 15 30 40
15 5 8 2
20 2 4 2
1 4 5 0
,如果方向为2(右),则输出数组将打印为:
10 25 55 95
15 20 28 30
20 22 26 28
1 5 10 10
现在,实现执行相同功能的另一个函数runningSum2DArrayList(ArrayList
我的主要方法如下:
import java.util.ArrayList;
import java.util.Scanner;
public class Lab3Task2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//input arrays with ";" between them
String[] temp = scanner.nextLine().split(";");
//input integers with white space between them
int[][] arr = new int[4][4];
for(int i = 0; i < 4; i++){
String[] tempA = temp[i].split("\\s");
for(int j = 0; j < 4; j++){
arr[i][j] = Integer.parseInt(tempA[j]);
}
}
//input integers with white space between them
ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>();
for(int i = 0; i < 4; i++){
String[] tempA = temp[i].split("\\s");
list.add(i, new ArrayList<Integer>());
for(int j = 0; j < 4; j++){
list.get(i).add(j, Integer.parseInt(tempA[j]));
}
}
runningSum2DArray(arr, 1);
runningSum2DArray(arr, 2);
runningSum2DArrayList(list, 3);
runningSum2DArrayList(list, 4);
scanner.close();
}
}
答案 0 :(得分:0)
如果您可以使用i
访问2D数组中第j
行和第arr[i][j]
列的元素,那么对于ArrayList<ArrayList<Integer>> list
,您可以得到相同的结果元素为list.get(i).get(j)
。
我不确定为什么您无法打印此信息。
您也可以仅使用list
打印System.out.println(list)
。它将以-
[[comma separated value from first array list],[...],[...],[csv from last arraylist]]
如果您不想以这种格式打印,请根据需要循环并打印单个元素。