两个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; } }
当然只有内循环。