2016-10-14 143 views
0

所以我的工作Java Koans和我卡上的數字69下面的代碼:與標籤繼續在for循環中

@Koan 
public void forLoopContinueLabel() { 
    int count = 0; 
    outerLabel: 
    for (int i = 0; i < 6; i++) { 
     for (int j = 0; j < 6; j++) { 
      count++; 
      if (count > 2) { 
       continue outerLabel; 
      } 
     } 
     count += 10; 
    } 
    // What does continue with a label mean? 
    // What gets executed? Where does the program flow continue? 
    assertEquals(count, __); 
} 

assertEquals檢查,如果答案是正確的 - 它發送Koans兩爭論,如果他們匹配你前進。例如,如果有人寫了assertEquals(3 + 3, 6)這是正確的。

雙下劃線表示REPLACE ME。在Koans應用程序中,它說我需要用8代替下劃線,但我不明白continue outerLabel的工作原理。

所以我的問題是:爲什麼計數8?

在此先感謝。任何幫助,將不勝感激。

+0

有一個在[官方教程]一些關於它(https://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html):*標記continue語句跳過當前迭代一個外部循環標有給定的標籤。* – UnholySheep

+0

你期望什麼? – Yev

+2

對於更詳細的解釋:一旦你的count變量大於2(當'i'爲0且'j'爲2時會發生這種情況),'continue outerLabel'這行會一直跳到循環的開始(跳過'count + = 10'),然後迭代直到'i'變爲6(計算迭代次數,您將看到'count'結束爲值8) – UnholySheep

回答

0
  • 僅對於i爲0的j爲0,1,2
  • 對於其餘的5我的唯一的j爲0
  • 1 * 3 + 5 * 1 = 8

i j count 
= = ===== 
0 0 0  count++ 
     1  count++ 
    1 2  count++ 
    2 3  count++; continue outerLabel 
1 0 4  count++; continue outerLabel 
: : :  : 
5 0 8  count++; continue outerLabel 
1

continue outerLabel;強制跳過第二個for

雖然第二個for打算重複6次,但實際上它只在i==0i>0時重複3次。

+0

你的意思是「i == 0」的3次。 – Andreas

+0

謝謝。固定。 – Paulo