簡體   English   中英

在java中使用1個循環查找2D數組的行數之和

[英]Finding sum of rows of 2D array, using 1 loop in java

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]組成,並且每個下一行以下一行的實際第一行結束一。

我有一種感覺,解決方案必須簡單,但我在過去一小時左右沒找到。 任何幫助,將不勝感激。

而不是將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++;
}

或者你可以做(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++;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM