假设我有这个:
while(a){
while(b){
if(b == 10)
break;
}
}
问题: break语句会将我从两个循环中取出还是仅从内循环中取出?谢谢。
答案 0 :(得分:30)
它只会破坏最直接的while循环。使用标签可以打破两个循环:看看这个取自here
的例子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");
}
}
答案 1 :(得分:25)
在你的示例中,break语句将带你离开while(b)循环
while(a) {
while(b) {
if(b == 10) {
break;
}
}
// break will take you here.
}
答案 2 :(得分:10)
仅来自内部,如果您希望打破特定循环,请使用带标记的中断
label1:
for(){
label2:
for(){
if(condition1)
break label1;//break outerloop
if(condition2)
break label2;//break innerloop
}
}
另见
答案 3 :(得分:6)
while(a){
while(b){
if(b == 10)
break;
}
}
在上面的代码中,您将打破最里面的循环,其中(即。immediate loop
)使用break
。
您可以使用break
label
label1:
while(a){
while(b){
break label1;
}
}
答案 4 :(得分:4)
它将突破立即包围它的循环。
然而,您可以打破标签:
myLabel:
while(a) {
while(b) {
if(b == 10)
break myLabel;
}
}
我一般不喜欢使用这种模式,因为它很容易导致意大利面条代码。使用未标记的中断或标志来终止循环。
答案 5 :(得分:4)
@Abhishekkumar
Break关键字有它来自C和Assembly的派生根,并且它的唯一目的是将控制权从复合语句中传出,即循环,条件,方法或程序。
请参考这些......
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,即一个在内循环中,一个在外循环中。
但是你想要同时停止两个循环,那么你必须使用退出或返回。
答案 6 :(得分:1)
break
语句会将您带出封闭break
语句的最内层循环。
在示例中,内部while循环。
答案 7 :(得分:0)
java break语句不会带你离开多个嵌套循环。
答案 8 :(得分:0)
作为一个奇怪的注释,在PHP中,break语句接受一个数字参数,该参数告诉你想要破坏多少个外循环,如下所示:
$i = 0;
while (++$i) {
switch ($i) {
case 5:
echo "At 5<br />\n";
break 1; /* Exit only the switch. */
case 10:
echo "At 10; quitting<br />\n";
break 2; /* Exit the switch and the while. */
default:
break;
}
}
答案 9 :(得分:0)
您可以引发一个标志,以将信息传递到外部while循环。在这种情况下,信息可以存储在变量breakBothLoopsFlag中,外部while循环根据此信息进行操作。 参见下面的伪代码:
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<div class="custom-control custom-checkbox mb-3">
<input type="checkbox" class="custom-control-input" id="customControlValidation1" required>
<label class="custom-control-label">Check this custom checkbox</label>
</div>
答案 10 :(得分:-1)
当然只有内循环。