在Java中,break如何与嵌套循环交互?
我知道一个语句跳出一个循环,但它是从嵌套循环跳出还是只是它当前所在的循环?break
没有任何装饰,只会打破最里面的循环。因此,在此代码中:break
while (true) { // A
while (true) { // B
break;
}
}
唯一的退出循环,所以代码将永远循环。break
B
但是,Java 有一个名为“命名中断”的功能,您可以在其中命名循环,然后指定要中断的循环。例如:
A: while (true) {
B: while (true) {
break A;
}
}
此代码不会永远循环,因为显式离开循环 。break
A
幸运的是,相同的逻辑也适用于 。默认情况下,执行包含该语句的最内层循环的下一次迭代,但它也可用于通过指定循环的标签来继续执行,从而跳转到外部循环迭代。continue
continue
continue
在Java以外的语言中,例如C和C++,这个“标记的break”语句不存在,并且不容易脱离乘法嵌套循环。可以使用该语句完成此操作,尽管这通常不受欢迎。例如,假设您愿意忽略Dijkstra的建议并使用,那么嵌套中断在C中可能是什么样子的:goto
goto
while (true) {
while (true) {
goto done;
}
}
done:
// Rest of the code here.
希望这有帮助!