Скажем, у меня есть это:
while(a){
while(b){
if(b == 10)
break;
}
}
Вопрос: вырвет ли оператор break из обоих циклов или только из внутреннего? Спасибо.
Скажем, у меня есть это:
while(a){
while(b){
if(b == 10)
break;
}
}
Вопрос: вырвет ли оператор break из обоих циклов или только из внутреннего? Спасибо.
В вашем примере оператор break выведет вас из while (b) loop
while(a) {
while(b) {
if(b == 10) {
break;
}
}
// break will take you here.
}
Он сломает только самый непосредственный цикл while. Используя ярлык, вы можете вырваться из обоих циклов: взгляните на этот пример, взятый из здесь
public class Test {
public static void main(String[] args) {
outerloop:
for (int i=0; i < 5; i++) {
for (int j=0; j < 5; j++) {
if (i * j > 6) {
System.out.println("Breaking");
break outerloop;
}
System.out.println(i + " " + j);
}
}
System.out.println("Done");
}
}
Только из внутреннего. Используйте помеченный разрыв, если вы хотите разорвать на определенный цикл
label1:
for(){
label2:
for(){
if(condition1)
break label1;//break outerloop
if(condition2)
break label2;//break innerloop
}
}
Также см
while (a) {
while (b) {
if (b == 10) {
break;
}
}
}
В приведенном выше коде вы разорвете внутренний цикл, где (то есть immediate loop
), где используется break
.
Вы можете разорвать обе циклы одновременно, используя break
с label
label1:
while (a) {
while (b) {
if (b == 10) {
break label1;
}
}
}
Он вырвется из цикла, который немедленно его включит.
Однако вы можете перейти к метке:
myLabel:
while(a) {
while(b) {
if(b == 10)
break myLabel;
}
}
Мне обычно не нравится использовать этот шаблон, потому что он легко приводит к коду спагетти. Используйте немаркированный разрыв или флаг для завершения цикла.
@Abhishekkumar
Разделите ключевое слово, получив его от C и Assembly, и разделите его единственную цель, чтобы передать управление из составного оператора i.e, Loop, Condition, Method или Procedures.
Пожалуйста, обратитесь к этим...
http://tigcc.ticalc.org/doc/keywords.html#break
http://www.functionx.com/cpp/keywords/break.htm
http://en.wikipedia.org/wiki/Break_statement#Early_exit_from_loops
Итак, если вы хотите выйти из двух циклов одновременно, вы должны использовать два разрыва, т.е. один во внутреннем цикле и один во внешнем цикле.
Но вы хотите остановить оба цикла одновременно, тогда вам придется использовать exit или return.
A break
выведет вас из самого внутреннего цикла, заключая в себе оператор break
.
В примере внутренний цикл while.
Как любопытная заметка, в PHP оператор break принимает числовой параметр, который указывает, сколько внешних контуров вы хотите разбить, например:
$i = 0;
while (++$i) {
switch ($i) {
case 5:
echo "At 5<br />\n";
break 1; /* Exit only the switch. */
case 10:
echo "At 10; quitting<br />\n";
break 2; /* Exit the switch and the while. */
default:
break;
}
}
Оператор java break не будет выводит вас из нескольких вложенных циклов.
Конечно, только внутренний цикл.