gpt4 book ai didi

java - 继续/中断时不必要的标签

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:11:29 27 4
gpt4 key购买 nike

我对下一段代码的执行感到困惑:

        label:
for (int i = 0; i < 100; i++) {
if (i % 2 == 0) continue;
if (i == 99) {
continue label;
}
System.out.println("i = " + i);
}

我希望这个循环是无限的。但不是。当值为 99 - 程序退出。我尝试使用 continuebreak 运算符,但仍然没有预期的结果。

我只是试着理解为什么这个循环不是无限的,我要怎么做才能做到这一点?

输出:

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/

27 4 0