在java中,continue不允许使用标签
我在一起使用多个标签时出错。只有第四个声明的标签允许继续 先继续,;给出编译器错误 为什么在下面的代码中只允许使用continue的第四个标签在java中,continue不允许使用标签,java,break,continue,Java,Break,Continue,我在一起使用多个标签时出错。只有第四个声明的标签允许继续 先继续,;给出编译器错误 为什么在下面的代码中只允许使用continue的第四个标签 publicstaticvoidmain(字符串[]args){ 第一:第二:第三:第四: 对于(int i=0;i这是预期的行为。continue只能在循环语句中使用。标签只属于一个语句。只有标签forth属于for-loop语句 让我们看一下: Java语言将标签定义为LabeledStatement,这意味着它们本身就是语句 标记语句由标签、冒号和
publicstaticvoidmain(字符串[]args){
第一:第二:第三:第四:
对于(int i=0;i这是预期的行为。continue
只能在循环语句中使用。标签只属于一个语句。只有标签forth
属于for
-loop语句
让我们看一下:
Java语言将标签定义为LabeledStatement
,这意味着它们本身就是语句
标记语句由标签、冒号和语句组成
因为标记语句是语句,所以可以嵌套它们
那么,在您的示例中,这意味着什么:
带标签的语句first:second:third:forth:for(;);
是一个嵌套的带标签语句,由标签first
和语句(带标签的语句)second:third:forth:for(;;);
标签语句second:third:forth:for(;;);
由标签second
和语句third:forth:for(;;);
带标签的语句third:forth:for(;);
由标签third
和语句forth:for(;);
最后,forth:for(;);
由标签forth
和语句for(;;);
因此,只有标签forth
是for
-循环所属的标签语句的标签,并且continue
只能在循环内使用,不能在循环外使用
一位评论者想知道为什么break:first;
有效,这是因为任何语句都可以中断,不管该语句是否为循环。因此,首先中断first
是合法的,而继续中断则不是。请查看我们的文章,帮助您提出一个好问题,从而得到一个好答案。@tony t如何什么是无限循环?当i>=5时,循环仍将退出。continue毫无价值,因为循环将在该点隐式继续。我认为这里的真正问题是,它在语法上对同一语句中的多个标签无效。但我很惊讶错误不在该行。我更惊讶的是我的J2SE 1.8.0_144-b01拒绝先继续
,但先中断
有效fine@tony一个标签后面可以跟着另一个标签,这是完全合法的。这没用,但它是合法的。@另一个家伙,当你思考Java中的标签到底是什么时,这是有道理的。你可以突破任何语句,但只能在循环语句内继续。开lyforth
是循环语句的标签,所有其他标签都是已标记语句的标签。请参阅我的答案。
public static void main(String[] args) {
first: second: third: forth:
for(int i=0;i<5;i++){
System.out.println("outer start");
for(int j =0;j<5;j++){
System.out.println("inner");
}
continue first;
}
System.out.println("end");
}