2011-03-25 77 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应用于具有匹配标签的循环”。