两个while循环中的break语句

假设我有这个:

while(a){ while(b){ if(b == 10) break; } } 

问题: break语句是否会将我从两个循环中取出或仅从内循环中取出? 谢谢。

在你的例子中,break语句将带你离开while(b)循环

 while(a) { while(b) { if(b == 10) { break; } } // break will take you here. } 

它只会破坏最直接的while循环。 使用标签可以打破两个循环:看一下这里的例子


 public class Test { public static void main(String[] args) { outerloop: for (int i=0; i < 5; i++) { for (int j=0; j < 5; j++) { if (i * j > 6) { System.out.println("Breaking"); break outerloop; } System.out.println(i + " " + j); } } System.out.println("Done"); } } 

仅从内部一个,如果您希望打破特定循环,请使用带标记的中断

 label1: for(){ label2: for(){ if(condition1) break label1;//break outerloop if(condition2) break label2;//break innerloop } } 

另见

  • 标记为rest

@Abhishekkumar

Break关键字有它来自C和Assembly的派生根,而Break它的唯一目的是将控制从复合语句中传出,即循环,条件,方法或过程。

请参考这些……

http://tigcc.ticalc.org/doc/keywords.html#break

http://www.functionx.com/cpp/keywords/break.htm

http://en.wikipedia.org/wiki/Break_statement#Early_exit_from_loops

所以,如果你想同时退出两个循环,那么你必须使用两个Breaks,即一个在内循环中,一个在外循环中。

但是你想同时停止两个循环然后你必须使用退出或返回。

它将突破立即包围它的循环。

但是,你可以打破一个标签:

 myLabel: while(a) { while(b) { if(b == 10) break myLabel; } } 

我一般不喜欢使用这种模式,因为它很容易导致意大利面条代码。 使用未标记的中断或标志来终止循环。

 while(a){ while(b){ if(b == 10) break; } } 

在上面的代码中,您将打破使用break的最里面的循环 (即immediate loop )。

您可以使用break with label 立即中断两个循环

 label1: while(a){ while(b){ break label1; } } 

break语句将带您走出封闭该break语句的最内层循环。

在示例中,内部while循环。

java break语句不会让你脱离多个嵌套循环。

作为一个好奇的注释,在PHP中,break语句接受一个数字参数,该参数告诉你要打破多少个外部循环,如下所示:

 $i = 0; while (++$i) { switch ($i) { case 5: echo "At 5
\n"; break 1; /* Exit only the switch. */ case 10: echo "At 10; quitting
\n"; break 2; /* Exit the switch and the while. */ default: break; } }

当然只有内循环。