Ответ 1
Без какого-либо украшения break
выйдет из самого внутреннего цикла. Таким образом, в этом коде:
while (true) { // A
while (true) { // B
break;
}
}
break
только выходит из цикла B
, поэтому код будет циклически навсегда.
Однако у Java есть функция, называемая "break", в которой вы можете назвать свои циклы, а затем указать, из какого из них выйти. Например:
A: while (true) {
B: while (true) {
break A;
}
}
Этот код не будет зацикливаться навсегда, потому что break
явно оставляет цикл A
.
К счастью, эта же логика работает для continue
. По умолчанию continue
выполняет следующую итерацию самого внутреннего цикла, содержащего оператор continue
, но его также можно использовать для перехода к итерациям внешнего цикла, указав метку цикла для продолжения выполнения.
В языках, отличных от Java, например, C и С++, этот оператор с надписью "помеченный разрыв" не существует, и непросто вырваться из многократного вложенного цикла. Это можно сделать с помощью оператора goto
, хотя обычно это не одобряется. Например, вот что такое вложенный разрыв может выглядеть как на C, предполагая, что вы готовы игнорировать совет Дейкстры и использовать goto
:
while (true) {
while (true) {
goto done;
}
}
done:
// Rest of the code here.
Надеюсь, это поможет!