Последующие этой страницы: Breaking out of nested loops in JavaВырвавшись из вложенных циклов в Java перевождь
Этот код прекрасно работает (часть решатель судоку, так что р является 9x9 стол):
int r = 0, c = 0;
out:
for(r = 0; r < 9; ++r){
for (c = 0; c < 9; ++c){
if (p[r][c] == 0){
break out;
}
}
}
// do stuff with r, c
Но этот код не работает! Единственное изменение состоит в том, что секции init для циклов for пусты.
int r = 0, c = 0;
out:
for(; r < 9; ++r){
for (; c < 9; ++c){
if (p[r][c] == 0){
break out;
}
}
}
// processes first row of array as it should, then breaks out with r=9, c=9
С r
и c
определены и инициализированы над петлями, эти блоки должны делать то же самое, но они этого не делают. Кто-нибудь может подумать, почему это ведет себя так, как это происходит?
ваш внутренний цикл выполняется только один раунд внешнего контура. то он никогда не удовлетворяет оценке c <9. Вероятно, вам нужно посмотреть «область переменных» в java и ее влияние. – Jimmy