可以在没有循环的情况下使用LABEL块吗?有什么例子吗?
答案 0 :(得分:15)
Here是使用不带循环的标签和break语句的示例:
block1: {
if (a < 0) {
break block1;
}
if (b < 0) {
break block1;
}
return a + b;
}
答案 1 :(得分:5)
但为什么要在代码块上使用标签?
我的应用程序通常是对String变量(或除char,byte,short,int,Enum之外的任何其他变量)的开关。
“做煎蛋,你必须打破鸡蛋”
示例:强>
String key = "scrambled";
eggs: {
if ("do-nothing".equals(key)) break eggs;
if ("scrambled".equals(key)) {
;//scramble code here
break eggs;
}
if ("fried".equals(key)) {
;//fry code here
break eggs;
}
//default behaviour goes here
//or maybe throw an exception
}
好的,好的,“有时,做一个煎蛋卷,你必须杀死一些人”
<强>备选方案:强>
if-then-else if
是可能的,但是
只会对很多可能性有意义,在这种情况下
整件事可能需要进行大修。答案 2 :(得分:4)
public static void main(String[] args)
{
hello: break hello;
}
答案 3 :(得分:2)
当然:
private boolean isSafe(String data) {
validation: {
if (data.contains("voldemort")) {
break validation;
}
if (data.contains("avada")) {
break validation;
}
if (data.contains("kedavra")) {
break validation;
}
return true;
}
return false;
}
@DragonBorn:那是不可能的。您只能在其范围内继续或中断标签,例如:
label1: for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
System.out.println(i + " " + j);
if (i == j) {
continue label1;
}
}
}
产生
0 0
1 0
1 1
2 0
2 1
2 2
3 0
3 1
3 2
3 3
答案 4 :(得分:0)
如果你想要一些不可读的代码:
int i = 1;
int j = 1;
label: switch (i) {
case 1:
switch (j) {
case 1:
break label;
}
default:
System.out.println("end");
}
没有break;
会打印“结束”。 break label;
将跳过打印。