在 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==0i&gt;0只迭代了3次。

【讨论】:

你的意思是i == 0的3次。

以上是关于在 for 循环中继续使用标签的主要内容,如果未能解决你的问题,请参考以下文章

盘点用jQuery框架实现“for循环”的四种方式!

盘点用jQuery框架实现“for循环”的四种方式!

Go中使用“继续标签”与使用“中断”跳出内循环的区别

java循环

无法在 Django 模板文件的 for 循环中使用条件标签

在 for 循环的每个循环中分配标签