在Java中,break如何与嵌套循环交互?

2022-09-01 01:55:46

我知道一个语句跳出一个循环,但它是从嵌套循环跳出还是只是它当前所在的循环?break


答案 1

没有任何装饰,只会打破最里面的循环。因此,在此代码中:break

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

唯一的退出循环,所以代码将永远循环。breakB

但是,Java 有一个名为“命名中断”的功能,您可以在其中命名循环,然后指定要中断的循环。例如:

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

此代码不会永远循环,因为显式离开循环 。breakA

幸运的是,相同的逻辑也适用于 。默认情况下,执行包含该语句的最内层循环的下一次迭代,但它也可用于通过指定循环的标签来继续执行,从而跳转到外部循环迭代。continuecontinuecontinue

在Java以外的语言中,例如C和C++,这个“标记的break”语句不存在,并且不容易脱离乘法嵌套循环。可以使用该语句完成此操作,尽管这通常不受欢迎。例如,假设您愿意忽略Dijkstra的建议并使用,那么嵌套中断在C中可能是什么样子的:gotogoto

while (true) {
    while (true) {
        goto done;
    }
}
done:
   // Rest of the code here.

希望这有帮助!


答案 2

默认情况下,它会跳出最里面的循环。但是,您可以指定标签并使其跳转外部循环