【发布时间】:2014-09-19 17:39:13
【问题描述】:
我试图了解“继续”的工作原理。我理解关键字的概念,但是当我运行不同的程序时,它的工作方式不同:-/ 让我给你举几个例子:
如果我运行这个程序:
int j = 0;
int i = 0;
LABEL1: for (; i < 3; i++) {
if (true)
continue;
}
i 的值将是 3。到目前为止一切顺利。 让我们添加一个外循环:
int j = 0;
int i = 0;
LABEL2: for (; j < 3; j++) {
LABEL1: for (; i < 3; i++) {
if (true)
continue LABEL2;
}
}
i 的值将是... 0 !! 我不明白如果 continue 与进入外循环的标签一起使用,为什么 i 不递增。有人可以解释为什么吗? 你有一些像 break 那样棘手的事情吗?还是用 do {} while ?
非常感谢您提供的任何帮助。
【问题讨论】:
-
i 永远不会增加 bc 你继续外循环
-
继续使用标签将转到标签指示的位置。这里 continue 跳转到 LABEL2,所以 i++ 没有被执行。
-
谢谢大家!我明白了。你帮了我很多!我刚刚发现了一些可以帮助其他人理解 continue 如何与循环一起工作的东西: continue 导致控制流跳转到循环条件(for while、do while 循环)或更新(for for 循环)。这会导致控制流跳转到下一次迭代。嘿,是否可以将其标记为已解决?
-
@user3884432 为了“将其标记为已解决”,只需从下面接受您最喜欢的答案。有很多好的。如果你不喜欢他们,写下你自己的答案并接受。
-
实际上,
continue将您分支到循环的末尾,就在关闭}之前。这会导致循环条件被重新评估,就像您的程序流“落入”到循环底部一样。在continue label;的情况下,控制转移到label:标识的循环底部。
标签: java for-loop while-loop break continue