这个错误意味着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