Блок меток может использоваться без цикла? Какие-либо примеры?
Если вам нужен нечитаемый код:
int i = 1;
int j = 1;
label: switch (i) {
case 1:
switch (j) {
case 1:
break label;
}
default:
System.out.println("end");
}
Без break;
напечатает «конец». разорвать этикетку;
пропустить печать.
public static void main(String[] args)
{
hello: break hello;
}
Здесь пример использования меток и Операторы прерывания без цикла:
block1: {
if (a < 0) {
break block1;
}
if (b < 0) {
break block1;
}
return a + b;
}
конечно:
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