在java中使用1个循环查找2D数组的行数之和

时间:2016-06-05 12:00:52

标签: java arrays

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]组成,并且每个下一行以下一行的实际第一行结束之一。

我有一种感觉,解决方案必须简单但我在过去一小时左右找不到。任何帮助将不胜感激。

2 个答案:

答案 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++;
}