问题
I'm trying to analyse a java code and see what it does, but in the "break label" line it gives the "Undefined label" error. from my understanding java unlike c# allows breaking into a scope outside of the current scope. isn't that right?
if (conditions) {
// some code
if (conditions) {
break label;
}
// some code
}
for (;;) {
if (conditions) {
// some code
}
// some code
break;
label:
// some code
}
回答1:
In your example, you are trying to use break label;
as though it were similar to the goto label;
syntax in C/C++. This is not how it works in Java.
in Java, the break label;
syntax is applicable only when you are using nested loops and you need to break out from an inner loop to one of the outer loops in question.
For example:
outer: while(some condition) {
inner: while(another condition) {
innermost: while(yet another condition) {
if(breaking_condition) {
break inner;
} else if (one more breaking condition) {
break outer;
}
}
}
}
Refer this tutorial from Oracle:
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html
Hope this helps!
来源:https://stackoverflow.com/questions/44129866/undefined-label-error-in-java-when-using-labeled-break