[英]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.