2017-07-26 24 views
0

我誤解了這個for循環中的某些內容。有人可以澄清?帶嵌套循環的Java打印陣列

String[][] artikelTabelle; 

    artikelTabelle = new String[2][2]; 

    artikelTabelle[0][0] = "Cow"; 
    artikelTabelle[0][1] = "Sheep"; 
    artikelTabelle[1][0] = "Dog"; 
    artikelTabelle[1][1] = "Lion"; 


    for(int i = 0; i < artikelTabelle.length; i++){ 
     for(int j = 0; j < artikelTabelle[0].length; j++){ 
      System.out.println(artikelTabelle[i][j]); 
     } 
    } 

首先,i和j是0.因此,打印數組[0] [0](Cow)。 但是在第二次迭代中,我和j都不是1,因爲i ++和j ++?獅子應該印刷的意思是什麼?我在這裏誤解了什麼?而且由於artikelTabelle [0] .length的長度爲2 - 爲什麼將其替換爲數字2會是錯誤的?

+0

可以改變內部循環(帶有j的那個循環)在'i'遞增之前迭代兩次。 – Lino

回答

5

您有兩個循環,一個外部循環和另一個嵌套在外部循環內部的內部循環。

這意味着(每次i遞增之前)的外循環的每次迭代,則執行的整個內循環(即j從0到artikelTabelle[0].lengthi之前遞增)。

因此首先打印artikelTabelle[0][0],然後是artikelTabelle[0][1](而不是artikelTabelle[1][1])。 artikelTabelle[1][1]僅在外循環的第二次迭代中打印。

至於是否使用2而不是artikelTabelle[0].length,後者更安​​全,因爲如果稍後更改數組的維數,則不必更改硬編碼的2

+0

謝謝,我想我現在明白了。但可以肯定的是:首先內部循環在執行之前被執行,然後遞增。然後打印artikelTabelle [0] [0]。然後內部循環再次執行,j遞增。j是one和artikelTabelle [0] [1]被打印。然後內循環通知,如果它再次增加(2)2 <2不會工作的條件。因此它進入外部循環並增加i。我現在是1.它不通過內循環並打印artikelTabelle [1] [0]。然後內部for循環再次執行,並打印artikelTabelle [1] [1]。是對的嗎? – NewbieJava

+0

@TeachMeSenpai是的,假設你打算在最後一句話中寫下「它通過」而不是「它不通過」。 – Eran

+0

哦,對不起,我的錯誤,謝謝:) – NewbieJava

2

artikelTabelle [0]。長度確實是2

但是,您誤讀循環。它是這樣的:

從i爲0開始,j爲0.您打印出artikelTabelle [0] [0]。 現在,我們仍處於循環的第二階段。我們的終止條件尚未得到滿足。所以我仍然是0,我們將j增加到1.現在我們打印出artikelTabelle [0] [1]。由於我們的條件現在滿足終止第二個for循環,我們恢復第一個循環。我增加到1,我們重複這個過程。我們打印出artikelTabelle [1] [0],然後是artikelTabelle [1] [1]。

希望我能夠提供幫助!

2

外部for循環將執行任何內部的指定次數。

因此內部代碼(這也是for循環)將被執行多次。

變量j被限定在外部循環中並初始化,這意味着當外部循環第二次啓動時,上一個變量不再存在。

1
在你代碼 artikelTabelle[0].length = 2artikelTabelle.length = 2所以對於外i循環比for循環內Ĵ增加1

loopind兩個時間是這樣的:

I = 0 => J = 0,J = 1; i = 1 => j = 0,j = 1;

for(int i = 0; i < artikelTabelle.length; i++){ 
     for(int j = 0; j < artikelTabelle[0].length; j++){ 
      System.out.println(artikelTabelle[i][j]); 
     } 
    }