代码之家  ›  专栏  ›  技术社区  ›  Rishava

标记的Continue语句无法编译

  •  -6
  • Rishava  · 技术社区  · 9 年前
    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);
                }
            }
        }
    }
    

    我用BlueJ编译了它,它说:“未定义标签”。我刚学会使用continue语句,所以我无法解决这个问题

    2 回复  |  直到 9 年前
        1
  •  5
  •   Turtle    9 年前

    你的 out 标签“注释”此for循环:

    out:
    for(i = 0 ; i <= 6 ; i++)
    {
        System.out.println(i);
    }
    

    出来 ,它需要 在内部

    out:
    for(int i = 0; i <= 6; i++)
    {
        System.out.println(i);
        continue out;
    }
    

    然而,在这种情况下,您不需要带标签的continue语句。没有歧义。只有一个循环可以“继续”退出。

    Oracle tutorial 很好地解释了这一点。


    值得一提的是,我甚至记不起最后一次使用continue标签是什么时候了——也许永远不会。除非你别无选择,否则我会避开他们。

        2
  •  1
  •   Turtle    9 年前

    我认为你没有得到使用 continue label if 声明是 continue out 通过呼叫 lolwa() ,您将获得所需的行为:您将被发送到函数的开头。