2014-10-01 69 views
0

我的代碼如下,來自Oracle。爲什麼不打破

public class MyLoop { 
    public static void main(String[] args) { 
    String[] sa = {"tom ", "jerry "}; 
    for(int x = 0; x < 3; x++) { 
     for(String s : sa) { 
     System.out.print(x + " " + s); 
     if(x == 1) break; 
     } 
    } 
    } 
} 

輸出:

0 tom 0 jerry 1 tom 2 tom 2 jerry 

我學習Java和我碰到這個來了。我不明白爲什麼1 tom在休息時間爲1時打印。如果1 tom打印爲什麼然後不1 jerry

+1

因爲只有休息打破下一個標籤...所以內部的for循環會在從「湯姆」和「傑裏」 ......除此之外,有關代碼的解釋是題外話這裏:(請拍下[旅遊]和閱讀[幫助/關於話題] – Vogel612 2014-10-01 14:53:51

+0

你的代碼是連續剛抽出執行用鉛筆 – 2014-10-01 14:54:28

+0

這是正確的:。。。迭代X = 0,S =湯姆,輸出0tom S =傑裏輸出0jerry X = 1 outout = 1tom那麼X是exaclty 1,因此打破X = 2一樣爲x = 0 – MrPk 2014-10-01 14:54:54

回答

1

x你打印表格sa的全部內容,但對於x == 1,在那裏你只打印Sa的第一個值的每個值:打印該值之後,你檢查x == 1,然後離開內部循環並繼續下一個x值。

-1

首先檢查「x == 1」然後打印。

String[] sa = { "tom ", "jerry " }; 
for (int x = 0; x < 3; x++) { 

    for (String s : sa) { 
     if (x == 1) { 
      break; 
     } 
     System.out.print(x + " " + s); 

    } 
} 
+0

不正是對OP的目的一樣... – Vogel612 2014-10-01 14:58:00

+1

@ Vogel612 - 。這並不表現一樣OP的原代碼(我不認爲你的意思是說它確實如此,但是你的評論的措辭可能暗示了這一點)。這個答案的問題在於它沒有解決OP的問題,這是爲什麼原始代碼的行爲方式它確實如此。 – 2014-10-01 15:02:23

相關問題