这个错误意味着break语句中缺少标签z?
嗨,在下面的代码我试图使用break和标签出来for循环,但我收到以下错误。 Label Z is missing.
请帮我看下面的代码。 请提及为什么会出现此错误。
public class Breaker { static String o = ""; public static void main(String[] args) { z: o = o + 2; for(int x = 3; x < 8; x++) { if(x==4) break; if(x==6) break z; o = o + x; } System.out.println(o); } }
您收到错误,因为在您的代码标签中z:不包含任何循环:
尝试下面的代码:我刚刚在标签z后面添加了一对大括号:你不会得到任何编译错误,你的代码就会运行。
public class Breaker { static String o = ""; public static void main(String[] args) { z: { o = o + 2; for(int x = 3; x < 8; x++) { if(x==4) break; if(x==6) break z; o = o + x; } System.out.println(o); } } }
为了打破循环,你必须标记循环语句,而不是其他语句。 虽然break someLabel
只与嵌套循环一起使用。 否则你可以使用简单的break
。
public void twoNum( int num, int val ) { OUTER_LOOP: // OUTER_LOOP is a label for ( int i = 0 ; i < num ; i++ ) { for ( int j = 0 ; j < num ; j++ ) { if ( i + j >= 2 * val ) break OUTER_LOOP ; val = val / 2 ; } } // break comes here if it runs }
当你写:
break OUTER_LOOP ;
标签OUTER_LOOP
必须是封闭循环的标签。 通常,这不是最内层的封闭循环,因为我们可以使用普通的break
语句,而不是“使用标签中断”。 label
必须在break
语句的封闭loop
之前。
增量Java
除了那个sysntax错误( lable
),如果您从上面的摘要中理解,在您的情况下,您只是break