根據題主提供的截圖描述,該代碼核心邏輯為:
n (表示有 n 行數據)。i (0 到 n-1):
m (表示該行後續有 m 個數據)。m 個整數存入二維數組 date[i][j]。m 個數的和 sum。sum。輸入: 3 <-- n = 3 行 4 1 2 3 4 <-- 第 1 行: m=4, 數據 1 2 3 4 2 10 20 <-- 第 2 行: m=2, 數據 10 20 3 5 5 5 <-- 第 3 行: m=3, 數據 5 5 5 輸出: 10 <-- 1+2+3+4 30 <-- 10+20 15 <-- 5+5+5
import java.util.Scanner;
public class RowSum {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt(); // 讀取行數
for (int i = 0; i < n; i++) {
int m = in.nextInt(); // 讀取本行數據個數
int sum = 0;
for (int j = 0; j < m; j++) {
int val = in.nextInt(); // 讀取每個數據
sum += val; // 累加求和
}
System.out.println(sum); // 輸出本行和
}
in.close();
}
}
外層循環 i=0..n-1 (控制行)
|
+-- 讀 m (本行元素數)
|
+-- 內層循環 j=0..m-1 (讀取元素並求和)
| |
| +-- 讀 date[i][j]
| +-- sum += date[i][j]
|
+-- 輸出 sum
|
+-- sum 歸零 (進入下一行前重置)
int sum = 0 放在外層循環外,會導致累加所有行的總和,而非單行和。n 是行數,m 是每行的列數 (每行可不同)。nextInt() 對應輸入流中的一個整數,多讀或少讀都會導致後續數據錯位。在 IDEA/Eclipse 中設置斷點,觀察 i, m, j, val, sum 變量隨循環變化的值,即可清晰理解數據流向。
該代碼實現「每行首數給出本行元素個數,隨後讀取該行元素並求和輸出」的經典巢狀循環邏輯。核心在於**外層控制行,內層讀取該行指定個數元素並累加**,每行結束輸出並重置累加器。