Ответ 1
В java вы можете использовать метку, чтобы указать, какой цикл прерывать/продолжать:
mainLoop:
while (goal <= 100) {
for (int i = 0; i < goal; i++) {
if (points > 50) {
break mainLoop;
}
points += i;
}
}
Я использую java довольно долгое время, но мое образование в циклах несколько не хватает. Я знаю, как создавать каждый цикл, который существует в java, и выходить из циклов. Однако я недавно подумал об этом:
Скажем, у меня есть два вложенных цикла. Могу ли я вырваться из обоих циклов, используя только один оператор
break
?
Вот что я до сих пор.
int points = 0;
int goal = 100;
while (goal <= 100) {
for (int i = 0; i < goal; i++) {
if (points > 50) {
break; //for loop ends, while loop does not
}
//I know I could put a 'break' statement here and end the while loop but I want to do it using just one 'break' statement
points += i;
}
}
Есть ли способ достичь этого?
В java вы можете использовать метку, чтобы указать, какой цикл прерывать/продолжать:
mainLoop:
while (goal <= 100) {
for (int i = 0; i < goal; i++) {
if (points > 50) {
break mainLoop;
}
points += i;
}
}
Да, вы можете написать разрыв с меткой, например:
int points = 0;
int goal = 100;
someLabel:
while (goal <= 100) {
for (int i = 0; i < goal; i++) {
if (points > 50) {
break someLabel;
}
points += i;
}
}
// you are going here after break someLabel;
Есть много способов обмануть этого кота. Здесь один:
int points = 0;
int goal = 100;
boolean finished = false;
while (goal <= 100 && !finished) {
for (int i = 0; i < goal; i++) {
if (points > 50) {
finished = true;
break;
}
points += i;
}
}
Обновление: Ничего себе, не знал о том, как сломать ярлыки. Это похоже на лучшее решение.
Элементарный, дорогой Ватсон...
int points = 0;
int goal = 100;
while (goal <= 100) {
for (int i = 0; i < goal; i++) {
if (points > 50) {
goal++;
break;
}
points += i;
}
}
или
int points = 0;
int goalim = goal = 100;
while (goal <= goalim) {
for (int i = 0; i < goal; i++) {
if (points > 50) {
goal = goalim + 1;
break;
}
points += i;
}
}
Вы можете reset переменные управления контуром.
int points = 0;
int goal = 100;
while (goal <= 100) {
for (int i = 0; i < goal; i++) {
if (points > 50) {
i = goal = 101;
}
points += i;
}
}
Вы не должны использовать метки на объективном языке. Вам нужно переписать условие /while.
Итак, ваш код должен выглядеть так:
int points = 0;
int goal = 100;
while (goal <= 100 && points <= 50) {
for (int i = 0; i < goal && points <= 50; i++) {
points += i;
}
}
// now points are 55