Labeled Continue语句无法编译

时间:2017-08-10 15:08:03

标签: 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);
            }
        }
    }
}

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

2 个答案:

答案 0 :(得分:5)

您的out标签“注释”此for-loop:

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

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

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

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

Oracle tutorial很好地解释了。

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

答案 1 :(得分:1)

我认为你没有使用continue label:它必须在循环中使用,并用于跳转到你的特定标签。 if语句一个循环。只需通过致电continue out来替换您的lolwa(),您就可以获得所需的行为:您将被发送到您的职能部门。