在这些例子中,如何触发“提前终止条款”?

3

break语句是如何工作的?

我知道如果在循环中使用break,循环将停止执行。例如:

for (int i=0; i<10; i++) {
    break;
}

但是,如果break语句位于循环内部,同时在ifelse语句中,它仍然有效吗?例如:

for (int i=0; i<10; i++) {
    if (i==7) {   
       //code
       break;
       //code
    }
}

break语句会让for循环结束,或跳过紧挨在if条件语句后面的代码并继续迭代。

如果break语句在一个嵌套的循环中,它会结束最近的那个循环,还是两个循环都结束?

谢谢。


1
没有标签的break语句试图将控制转移到最内层封闭的(1)switchwhiledofor语句(2),即直接封闭的方法或初始化程序;这个语句被称为break目标,然后立即正常完成。 - Andrew Tobilko
1
JLS 14.15. The break Statement JLS 14.15中的break语句 - user85421
4个回答

1

break语句总是只退出内部循环。if语句不算在内。如果你需要同时中断多个循环,可以使用标签:

A: while (true) {
    B: while (true) {
         break A;
    }
}

1
“break”语句总是打破循环。如果您想在特定索引处跳过迭代,可以使用“continue”关键字:
for (int i=0; i<10; i++) {
if (i==7) {   
   //code
   continue;
   //second part of code
}

}

这段代码的作用是,如果i等于7,它将运行//code部分,当它到达continue语句时,它将立即跳过//second code部分并移动到下一个迭代i = 8。如果你有多个嵌套循环,break语句只会中断它所应用的循环。然而,如果父循环被中断,子(嵌套)循环也会自动中断。

    for (int i=0; i<10; i++) {
     for(int j = 0; j<10; j++){
      if(j==3){
       break;
    }
  }
}

这段代码仅在j等于3时才会中断内部循环。请注意,由于第二个循环是嵌套的,即使它中断了,当父循环进入下一个索引时,它也会再次运行。

1

break会导致跳转到循环的结尾,请参见下面的示例:

for (int i=0; i<10; i++) {
    if (i==7) {   
       // code here will be executed
       break;
       // code here will not be executed
    }
} // break statement is like a goto to this line

一个 break 语句总是只影响其中最内层循环


1
for (int i=0; i<10; i++) {
    if (i==7) {   
       //code A
       break;
       //code B
    }
}

这将循环运行8次,并在i=7时中断整个循环。此外,在break语句后的代码B将无法到达,因此在这种情况下写它毫无意义。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接