2017-04-14 55 views
1

的代碼這個例子:唔明多維數組

// 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(); 
     } 
    }  
} 

輸出給我:

0 1 2 3 4 

5 6 7 8 9 

10 11 12 13 14 

15 16 17 18 19 

的問題是,爲什麼沒有新的生產線給每一個數字?我的意思是在for循環中,如果第一個System.out輸出20次,爲什麼不是下一個System.out.println();輸出相同的數量?

回答

2

如果沒有括號,一個for循環體是一個語句。如果再加上明顯的括號,那麼你的代碼看起來像

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

這就是爲什麼println只有內for循環之後執行。

+0

非常感謝! :) – Ken

5

如果你使用正確的縮進,這本來是清晰的:

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

System.out.println();屬於外循環,所以它對於外部循環的每次迭代內循環結束後執行一次。

您也可以包裝在大括號內循環,以使其更清晰:

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

非常感謝您的反饋!從來沒有想過我的第一個問題實際上會得到徹底和快速的回​​答! – Ken