int[][] arr = { { 11, 12, 13, 14, 15, 16 },
{ 21, 22, 23, 24, 25, 26 },
{ 31, 32, 33, 34, 35, 36 },
{ 41, 42, 43, 44, 45, 46 },
{ 51, 52, 53, 54, 55, 56 },
{ 61, 62, 63, 64, 65, 66 } };
int sum = 0;
int rowsSum = 0;
int rowIndex = 0;
for (int i = 0; i < arr.length * arr.length; i++) {
System.out.print(arr[i / arr.length][i % arr.length] + " ");
sum += arr[i / arr.length][i % arr.length];
if (i % 6 == 0) {
System.out.println();
System.out.println("Sum of row " + (rowIndex + 1) + " is: " + sum);
rowsSum += sum;
sum = 0;
rowIndex++;
}
}
System.out.println();
System.out.println("Sum of all rows is: " + rowsSum);
这是我到目前为止所写的内容。我遇到的问题是我在第一次迭代时为0,同时使i%6 = 0并使其成为第1行仅由arr [0] [0]组成,并且每个下一行以下一行的实际第一行结束之一。
我有一种感觉,解决方案必须简单但我在过去一小时左右找不到。任何帮助将不胜感激。
答案 0 :(得分:4)
不是将i%6
与零进行比较,而是将其与5
进行比较,将剩余数字再次降为零之前的最后一个数字。这将允许您在到达当前行的最后一个元素时执行输出,而不是等待到达下一行的初始元素(并完全删除最后一行的打印输出)。
if (i % 6 == 5) {
System.out.println();
System.out.println("Sum of row " + (rowIndex + 1) + " is: " + sum);
rowsSum += sum;
sum = 0;
rowIndex++;
}
答案 1 :(得分:0)
或者您可以(i+1) % 6 == 0
代替i % 6 == 0
if ((i+1) % 6 == 0) {
System.out.println("Sum of row " + (rowIndex + 1) + " is: " + sum);
rowsSum += sum;
sum = 0;
rowIndex++;
}