难以理解多维数组上的这个例子

Uno*_*yan 1 java arrays for-loop multidimensional-array elementary-os

对于代码:

// Demonstrate a two-dimensional array.
class TwoDArray {
    public static void main(String args[]) {
        int twoD[][] = new int[4][5];
        int i, j, k = 0;
        for (i = 0; i < 4; i++)
            for (j = 0; j < 5; j++) {
                twoD[i][j] = k;
                k++;
            }
        for (i = 0; i < 4; i++) {
            for (j = 0; j < 5; j++)
                System.out.print(twoD[i][j] + " ");
                System.out.println();
        }
    }    
}
Run Code Online (Sandbox Code Playgroud)

输出给了我:

0 1 2 3 4

5 6 7 8 9

10 11 12 13 14

15 16 17 18 19
Run Code Online (Sandbox Code Playgroud)

问题是,为什么不给每个数字赋予新的界限?我的意思是在for循环中,如果第一个System.out输出20次,为什么下一次System.out.println();输出的数量不一样呢?

Era*_*ran 5

如果你使用了适当的缩进,它会更清楚:

for (i=0; i<4; i++) {
    for (j=0; j<5; j++)
        System.out.print(twoD[i][j] + " ");
    System.out.println();
}
Run Code Online (Sandbox Code Playgroud)

System.out.println(); 属于外部循环,因此在内部循环结束后,它会对外部循环的每次迭代执行一次.

您还可以将内部循环包裹在花括号中以使其更清晰:

for (i=0; i<4; i++) {
    for (j=0; j<5; j++) {
        System.out.print(twoD[i][j] + " ");
    }
    System.out.println();
}
Run Code Online (Sandbox Code Playgroud)