J'utilise Java depuis quelque temps déjà, mais mon éducation en boucle manque quelque peu. Je sais créer chaque boucle existant en Java et en sortir également. Cependant, j'ai récemment pensé à ceci:
Disons que j'ai deux boucles imbriquées. Pourrais-je sortir des deux boucles en utilisant une seule instruction
break
?
Voici ce que j'ai jusqu'à présent.
int points = 0;
int goal = 100;
while (goal <= 100) {
for (int i = 0; i < goal; i++) {
if (points > 50) {
break; // For loop ends, but the 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;
}
}
Y a-t-il un moyen d'y parvenir?
En Java, vous pouvez utiliser une étiquette pour spécifier la boucle à interrompre/continuer:
mainLoop:
while (goal <= 100) {
for (int i = 0; i < goal; i++) {
if (points > 50) {
break mainLoop;
}
points += i;
}
}
Oui, vous pouvez écrire break avec label exemple:
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;
Il y a beaucoup de manières de peler ce chat. En voici un:
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;
}
}
Mise à jour : Wow, je ne savais pas qu'il fallait rompre avec les étiquettes. Cela semble être une meilleure solution.
Elémentaire, cher Watson ...
int points = 0;
int goal = 100;
while (goal <= 100) {
for (int i = 0; i < goal; i++) {
if (points > 50) {
goal++;
break;
}
points += i;
}
}
ou
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;
}
}
Vous pouvez réinitialiser les variables de contrôle de boucle.
int points = 0;
int goal = 100;
while (goal <= 100) {
for (int i = 0; i < goal; i++) {
if (points > 50) {
i = goal = 101;
}
points += i;
}
}
Vous ne devez pas utiliser les étiquettes dans un langage objectif . Vous devez réécrire la condition for/while.
Donc, votre code devrait ressembler à:
int points = 0;
int goal = 100;
while (goal <= 100 && points <= 50) {
for (int i = 0; i < goal && points <= 50; i++) {
points += i;
}
}
// Now 'points' is 55