嗨,在下面的代码我试图使用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);
}
}
答案 0 :(得分: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);
}
}
}
答案 1 :(得分:1)
为了打破循环,你必须标记循环语句,而不是其他语句。 break someLabel
只能与嵌套循环一起使用。否则,您可以使用普通break
。
答案 2 :(得分: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
封闭之前。
除了sysntax错误(lable
的位置)之外,如果您从上述摘要中了解到,在您的情况下,您只是break