我对下一段代码的执行感到困惑:
label:
for (int i = 0; i < 100; i++) {
if (i % 2 == 0) continue;
if (i == 99) {
continue label;
}
System.out.println("i = " + i);
}
我希望这个循环是无限的。但不是。当值为 99 - 程序退出。我尝试使用 continue
和 break
运算符,但仍然没有预期的结果。
我只是试着理解为什么这个循环不是无限的,我要怎么做才能做到这一点?
输出:
i = 1
i = 3
......
i = 93
i = 95
i = 97
Process finished with exit code 0
最佳答案
continue
continues 标记的循环,不涉及将 i
重置为其初始值;所以你所做的任何事情都不能阻止 i
增加,直到它达到 100
并且循环终止。是的,你说得对,标签是不必要的。
要使其无限,只需在循环内重置i
,不需要标签或continue
:
for (int i = 0; i < 100; i++) {
if (i == 99) {
i = 0;
}
System.out.println("i = " + i);
}
或者可能是这个,它再次输出 99 然后 0 并继续:
for (int i = 0; i < 100; i++) {
System.out.println("i = " + i);
if (i == 99) {
i = -1;
}
}
或者如果出于某种原因您真的非常想使用 continue
执行此操作,您需要第二个外部循环:http://ideone.com/ofgpK3
label:
while (true) {
for (int i = 0; i < 100; i++) {
System.out.println("i = " + i);
if (i == 99) {
continue label;
}
}
}
关于java - 继续/中断时不必要的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27468925/