我有这段代码,可以在特定条件下(当x和y都等于零时)从数组生成随机数。我希望控件跳转到标签。但是控件在任何情况下都不会跳转到标签。我想知道我是否做对了?
int[] arr = {0, 1, 2};
Random rn = new Random();
label: {
//some code
if (x != 0 && y !=0) {
//some code
} else {
break label;
}
}
Run Code Online (Sandbox Code Playgroud)
没有研究是否应该,是的,你可以使用标记声明与ifJava中。根据1.7规范
标识符声明为立即包含的语句的标签。标识符语句标签与出现在标签语句内任何地方的break(§14.15)或continue(§14.16)语句一起使用。
它继续(强调已添加)
如果该语句由标识符标识,并且包含的语句由于与同一标识符的中断而突然完成,则带标签的语句将正常完成。在其他所有突然完成该语句的情况下,带标签的语句由于相同的原因而突然完成。
因此,如果您break使用if块(记住块是语句),则可以退出if主体。让我们测试一下:
public static void main(String[] args) {
if (true) label: {
if (args != null)
break label;
System.out.println("doesn't get here");
}
System.out.println("Outside of labeled block");
}
Run Code Online (Sandbox Code Playgroud)
输出:
Outside of labeled block
Run Code Online (Sandbox Code Playgroud)