2011-03-25 111 views
10

其實,這是我第一次看到這樣的代碼:我需要幫助來理解這段代碼

class A 
{ 
    public static void main(String args[]) 
    { 
     outer : for(int i=0;i<10;i++) 
     { 
      for(int j=0;j<10;j++) 
      { 
       if(j > i) 
       { 
        System.out.println(); 
        continue outer; 
       } 
       System.out.print(" " +(i *j)); 
      } 
     } 
     System.out.println(); 
    } 
} 

兩行我不明白:

outer : for(int i=0;i<10;i++) // this seems similar to 'for each'? 

continue outer; // I know that 'continue' will break the loop and continue the next turn, but what will do in this situaton? 
+5

爲什麼downvote?沒有愚蠢的問題,只有愚蠢的老師。 – 2011-03-25 17:08:24

+11

@Aaron:我認爲*有*愚蠢的問題,但我不認爲這是其中之一。 – 2011-03-25 17:09:09

+0

這個有點代碼是當你將遺留的C轉換成Java並且不敢碰任何東西時會發生什麼...... – iluxa 2011-03-25 18:39:36

回答

4
outer : for(int i=0;i<10;i++) 

定義了外環的標籤,叫做outer

continue outer; 

手段,去標記outer

10

outer:部分是一個標籤。這基本上是標記循環。循環本身就像平常一樣工作。

continue outer;表示「繼續回到標記爲outer的循環體的開始處」(當然在遞增和測試i之後)。這就像有一個break;語句脫離內循環,然後立即有一個正常的continue;語句來繼續外循環的下一步。

3

outer是一個標籤,當continue outer;被調用時,代碼將跳轉到outer標籤並從那裏繼續。其原因背後的原因是編碼器想要在j>i時退出內部循環並繼續外部循環。

+0

哦,太棒了,第一次我知道java有這個功能......謝謝! – 2011-03-25 17:08:07

1

outer是一個標籤,而continue outer基本上是一個goto但是繼續循環而不是再次啓動它。

1

outer:定義了一個標籤「外」,你可以使用循環的下一個迭代在breakcontinue。它只允許在循環結構前面(for,while,do)。

因此continue outer表示「繼續使用外部循環」或「將continue應用於具有匹配標籤的循環」。