使用带标签的中断时,java中出现“未定义标签”错误

Azi*_*lvl 1 java label break

我正在尝试分析 java 代码并查看它的作用,但在“break label”行中它给出了“未定义标签”错误。根据我的理解,java 与 c# 不同,它允许闯入当前范围之外的范围。是吗?

if (conditions) {
  // some code
  if (conditions) {
    break label;
  }
  // some code
}

for (;;) {
  if (conditions) {
    // some code
  }
  // some code
  break;
  label: 
  // some code
}
Run Code Online (Sandbox Code Playgroud)

ana*_*ron 5

在您的示例中,您尝试使用break label;类似于goto label;C/C++ 中的语法。Java 中不是这样工作的。

在 Java 中,该break label;语法仅在您使用嵌套循环并且需要从内部循环跳到相关外部循环之一时才适用。

例如:

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;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

请参考 Oracle 的此教程:

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html


希望这可以帮助!