1

嗨,在下面的代码中,我尝试使用 break 和 label 退出 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);
     }
 }
4

3 回答 3

3

您收到错误是因为在您的代码标签 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);
     }
    }
 }
于 2013-08-16T05:36:43.517 回答
1

为了跳出循环,您必须标记循环语句,而不是其他语句。break someLabel不过,只有与嵌套循环一起才有意义。否则,您可以只使用普通的break.

于 2013-08-16T05:30:13.013 回答
0
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必须在loop语句break的封闭之前。

增量Java

除了那个 sysntax 错误(Place of the lable),如果你从上面的总结中理解,在你的情况下,你只是break

于 2013-08-16T05:30:57.050 回答