【发布时间】:2018-03-05 21:03:49
【问题描述】:
我有一个函数可以汇总数组的行并将其显示在开头/结尾的一列中。它最初是使用 2D 数组 (int[][]) 完成的,并且工作正常。我现在想将输入更改为二维列表(List<List<Integer>>)而不是数组。这是使用 int[][] 的函数,目前有效:
public static void sumLeft(int[][] numbers) {
for (int i = 0; i < numbers.length; i++) {
for (int j = 1; j < numbers[i].length; j++) {
numbers[i][0] += numbers[i][j];
numbers[i][j] = 0;
}
}
}
所以如果我接受这个数组:
10 15 30 40
15 5 8 2
20 2 4 2
1 4 5 0
结果如下:
95 0 0 0
30 0 0 0
28 0 0 0
10 0 0 0
现在我想做同样的事情,但使用 2D 列表或List<List<Integer>>。
这是我目前拥有的:
public static void listLeft(List<List<Integer>> list) {
int sum = 0;
for (int i = 0; i < list.size(); i++) {
List<Integer> innerList = list.get(i);
for (int j = 0; j < list.get(i).size(); j++) {
sum += list.get(i).get(j);
innerList.set(0, sum);
innerList.set(j, 0);
}
}
}
如果我输入同一组数字,它会输出:
95 0 0 0
125 0 0 0
153 0 0 0
163 0 0 0
*注意第 2-4 行的值有误。
【问题讨论】:
-
提示:数组的实现之和与列表的实现之和之间存在关系。仔细观察;)(或使用调试器)。
标签: java arrays algorithm arraylist multidimensional-array