我最近一直在使用2D和Jagged Arrays,并尝试将每个元素添加到一行中,并将每个元素添加到列中。我得到了打印出每行总和的代码,但是在添加数组中的每一列时遇到了困难。
注意:我尝试过sum += numbers[c][r];
,但它无效
import java.util.Arrays;
import java.io.*;
public class Homework{
public static void main(String[] args) {
int[][] numbers = { {3, 2, 5,},
{1, 4, 4, 8, 13},
{9, 1, 0, 2},
{0, 2, 6, 3, -1, -8} };
//Adding each row in the array
int sum = 0;
for(int r = 0; r < numbers.length; r++) {
sum = 0;
for(int c = 0; c < numbers[r].length; c++) {
sum += numbers[r][c];
}
System.out.println("Sum of row: " + sum);
}
//Adding each column in the row
int sum2 = 0;
for(int r = 0; r < numbers.length; r++) {
sum2 = 0;
for(int c = 0; c < numbers[r].length; c++) {
sum2 += numbers[c][r];
}
System.out.println("Sum of column: " + sum2);
}
}
}
答案 0 :(得分:0)
好的,所以你有点走上正轨。让我在进入代码之前解释一下思考方式。
你有一个非方形的二维数组,你想要每个行和列的总和。行很简单,你已经完成了。列有点困难,因为它非方形,你会遇到ArrayOutOfBoundsExceptions
,因为它试图访问不存在的数组艺术。
要解决此问题,您需要知道最大列数,然后遍历数组。但是,您还需要注意ArrayOutOfBoundsException
,确保考虑当前列迭代何时大于行长度。
我在行总和部分添加了int max
,这样我就不必多次迭代相同的信息了。
之后,我将'{1}}替换为'max',因为我们需要迭代X列。
然后我遍历行,因为它们是统一的,并且很容易被c < numbers[r].length
找到。
因此,对代码进行简单更改即可获得所需的结果。见下文。
numbers.length