错误:未定义标签,如何在java中使用此代码中的label语句?

时间:2013-08-10 08:07:23

标签: java label

我在Java的教科书中读到任何语句都可以被标记,并且可以与break一起使用。 但在尝试此代码时,我得到错误未定义标签。 (堆栈溢出的人在将此问题标记为重复之前等待,我已检查过这些问题,但没有一个解释此问题)。

public class LabelTest {

    public static void main(String[] args) {

        first: System.out.println("First statement");
        for (int i = 0; i < 2; i++) {
            System.out.println("Second statement");
            break first;
        }
    }
}

1 个答案:

答案 0 :(得分:2)

根据JLS 14.7

  

标签声明的标签范围是立即的   包含声明。

因此,在您的情况下,标签first的范围是标签后面的sysout语句。更清楚的是,您可以使用花括号来定义范围,并且在这些括号内,其有效的跳转到标签。以下是有效的

first: {
        System.out.println("First statement");
        for (int i = 0; i < 2; i++) {
            System.out.println("Second statement");
            break first;
        }
    }

OR

first: {
    System.out.println("First statement");
    break first;
}
second:
for(int i=0;i<2;i++){
    System.out.println("Second statement");
    break second;
}