在 for 循环中继续使用标签
Posted
技术标签:
【中文标题】在 for 循环中继续使用标签【英文标题】:Continue with a label in a for loop 【发布时间】:2016-10-14 21:13:45 【问题描述】:所以我正在处理 Java Koans,但我被困在 69 号上。这是代码:
@Koan
public void forLoopContinueLabel()
int count = 0;
outerLabel:
for (int i = 0; i < 6; i++)
for (int j = 0; j < 6; j++)
count++;
if (count > 2)
continue outerLabel;
count += 10;
// What does continue with a label mean?
// What gets executed? Where does the program flow continue?
assertEquals(count, __);
assertEquals
检查答案是否正确 - 它会向 Koans 发送两个参数以及它们是否与您提前匹配。例如,如果有人写assertEquals(3 + 3, 6)
,那就是正确的。
双下划线表示REPLACE ME
。在 Koans 应用程序中,它说我需要用 8 替换下划线,但我不明白 continue outerLabel
是如何工作的。
所以我的问题是:为什么是 8?
提前致谢。任何帮助将不胜感激。
【问题讨论】:
official tutorial 中有一点关于它的内容:带标签的 continue 语句跳过标有给定标签的外部循环的当前迭代。 你期待什么? 还有更详细的解释:一旦您的计数变量大于 2(当i
为 0 且 j
为 2 时发生),continue outerLabel
行将始终跳过到循环的开头(跳过 count += 10
)然后迭代直到 i
变为 6(计算迭代次数,您将看到 count
最终值为 8)
What is the "continue" keyword and how does it work in Java?的可能重复
“为什么这个问题值得一票否决” -- 因为你可以研究了“continue
标签”
【参考方案1】:
仅当 i 为 0 时,j 才为 0、1、2。
对于剩下的 5 个 i,只有 j 是 0
1*3 + 5*1 = 8
或者
i j count
= = =====
0 0 0 count++
1 count++
1 2 count++
2 3 count++; continue outerLabel
1 0 4 count++; continue outerLabel
: : : :
5 0 8 count++; continue outerLabel
【讨论】:
简短的回答是:第一圈计数增加 3,外循环的剩余五圈总共增加 5。【参考方案2】:continue outerLabel;
强制跳过第二个for
。
虽然第二个for
打算迭代6次,但实际上i==0
和i>0
只迭代了3次。
【讨论】:
你的意思是i == 0
的3次。以上是关于在 for 循环中继续使用标签的主要内容,如果未能解决你的问题,请参考以下文章