Labeled Continue语句无法编译

-6 java continue

import java.util.Scanner;
class testing
{
    int i ; int j ;
    Scanner sc = new Scanner(System.in) ;
    void lolwa()
    {
        out:
        for(i = 0 ; i <= 6 ; i++)
        {
            System.out.println(i);
        }
        System.out.println("Enter 1 to restart loop");
        System.out.println("Enter 2 to continue till 10");
        j = sc.nextInt();
        if(j == 1)
        {
            continue out ;
        }
        if(j == 2)
        {
            for(i = 7 ; i <= 10 ; i++)
            {
                System.out.println(i);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我在BlueJ编译它,它说:"未定义的标签输出".我刚学会使用continue语句,所以我无法弄清楚问题

Mic*_*ael 5

你的out标签"注释"这个for循环:

out:
for(i = 0 ; i <= 6 ; i++)
{
    System.out.println(i);
}
Run Code Online (Sandbox Code Playgroud)

因此,为了继续使用标签out,它需要 for循环中.在for循环结束之后使用它是没有意义的.这将编译,例如:

out:
for(int i = 0; i <= 6; i++)
{
    System.out.println(i);
    continue out;
}
Run Code Online (Sandbox Code Playgroud)

但是,在这种情况下,您不需要带标签的continue语句.没有含糊之处.只有一个循环可以"继续"出来.

甲骨文教程很好地解释它.


值得一提的是,我甚至不记得我最后一次使用标记为继续 - 也许永远不会.除非你几乎别无选择,否则我会避开它们.

  • 我只能假设它是汇编的JSR命令(例如)的残余.我之前使用过它们,因为根本没有其他选择.IMO使用标签来控制像java这样的高级语言的逻辑流程,这表明几乎每一个案例都有不好的设计. (2认同)