Sentència break
La sentència break té dos usos
A la secció 5 ja vam veure el seu ús a la sentència switch.
En aquesta ocasió veurem el seu ús per a finalitzar loops.
El següent exemple és una demostració d'un loop que inclou un break.
La condició per a continuar el loop sempre és true, però s'aturarà quan la variable i
sigui 5 amb l'ús de la sentència break que hi ha a dintre del condicional.
int i = 10;
while (true) {
System.out.print(i + " ");
if (i == 5) {
break;
}
i--;
}
System.out.print("Final");
int i = 10;
while (true) {
System.out.print(i + " ");
if (i == 5) {
break;
}
i--;
}
System.out.print("Final");
Aquest bucle, en principi, no pararia mai, ja que la
seva condició sempre és true.
int i = 10;
while (true) {
System.out.print(i + " ");
if (i == 5) {
break;
}
i--;
}
System.out.print("Final");
i: 10
int i = 10;
while (true) {
System.out.print(i + " ");
if (i == 5) {
break;
}
i--;
}
System.out.print("Final");
i: 10
10 no és igual a 5
int i = 10;
while (true) {
System.out.print(i + " ");
if (i == 5) {
break;
}
i--;
}
System.out.print("Final");
i: 10
10
int i = 10;
while (true) {
System.out.print(i + " ");
if (i == 5) {
break;
}
i--;
}
System.out.print("Final");
i: 10
10
int i = 10;
while (true) {
System.out.print(i + " ");
if (i == 5) {
break;
}
i--;
}
System.out.print("Final");
i: 9
10
int i = 10;
while (true) {
System.out.print(i + " ");
if (i == 5) {
break;
}
i--;
}
System.out.print("Final");
i: 9
10
9 no és igual a 5
int i = 10;
while (true) {
System.out.print(i + " ");
if (i == 5) {
break;
}
i--;
}
System.out.print("Final");
i: 9
10 9
int i = 10;
while (true) {
System.out.print(i + " ");
if (i == 5) {
break;
}
i--;
}
System.out.print("Final");
i: 9
10 9
int i = 10;
while (true) {
System.out.print(i + " ");
if (i == 5) {
break;
}
i--;
}
System.out.print("Final");
i: 8
10 9
int i = 10;
while (true) {
System.out.print(i + " ");
if (i == 5) {
break;
}
i--;
}
System.out.print("Final");
i: 8
10 9
8 no és igual a 5
int i = 10;
while (true) {
System.out.print(i + " ");
if (i == 5) {
break;
}
i--;
}
System.out.print("Final");
i: 8
10 9 8
int i = 10;
while (true) {
System.out.print(i + " ");
if (i == 5) {
break;
}
i--;
}
System.out.print("Final");
i: 8
10 9 8
int i = 10;
while (true) {
System.out.print(i + " ");
if (i == 5) {
break;
}
i--;
}
System.out.print("Final");
i: 7
10 9 8
int i = 10;
while (true) {
System.out.print(i + " ");
if (i == 5) {
break;
}
i--;
}
System.out.print("Final");
i: 7
10 9 8
7 no és igual a 5
int i = 10;
while (true) {
System.out.print(i + " ");
if (i == 5) {
break;
}
i--;
}
System.out.print("Final");
i: 7
10 9 8 7
int i = 10;
while (true) {
System.out.print(i + " ");
if (i == 5) {
break;
}
i--;
}
System.out.print("Final");
i: 7
10 9 8 7
int i = 10;
while (true) {
System.out.print(i + " ");
if (i == 5) {
break;
}
i--;
}
System.out.print("Final");
i: 6
10 9 8 7
int i = 10;
while (true) {
System.out.print(i + " ");
if (i == 5) {
break;
}
i--;
}
System.out.print("Final");
i: 6
10 9 8 7
6 no és igual a 5
int i = 10;
while (true) {
System.out.print(i + " ");
if (i == 5) {
break;
}
i--;
}
System.out.print("Final");
i: 6
10 9 8 7 6
int i = 10;
while (true) {
System.out.print(i + " ");
if (i == 5) {
break;
}
i--;
}
System.out.print("Final");
i: 6
10 9 8 7 6
int i = 10;
while (true) {
System.out.print(i + " ");
if (i == 5) {
break;
}
i--;
}
System.out.print("Final");
i: 5
10 9 8 7 6
int i = 10;
while (true) {
System.out.print(i + " ");
if (i == 5) {
break;
}
i--;
}
System.out.print("Final");
i: 5
10 9 8 7 6
En aquest punt, i sí és igual a 5
int i = 10;
while (true) {
System.out.print(i + " ");
if (i == 5) {
break;
}
i--;
}
System.out.print("Final");
i: 5
10 9 8 7 6 5
El break trencarà el bucle
int i = 10;
while (true) {
System.out.print(i + " ");
if (i == 5) {
break;
}
i--;
}
System.out.print("Final");
i: 5
10 9 8 7 6 5
int i = 10;
while (true) {
System.out.print(i + " ");
if (i == 5) {
break;
}
i--;
}
System.out.print("Final");
i: 5
10 9 8 7 6 5
int i = 10;
while (true) {
System.out.print(i + " ");
if (i == 5) {
break;
}
i--;
}
System.out.print("Final");
i: 5
10 9 8 7 6 5 FINAL
La sentència break només finalitza el bucle en el qual
està col·locada. Si aquest bucle està dintre d'un altre bucle, el
bucle exterior no s'aturarà.
El següent programa exemplifica aquest comportament:
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
Com i és menor que 5 iterem el bucle extern.
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 0
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 0
j < 5 és true, s'itera el bucle intern
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 0
j: 0
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 0
j: 0
Com 0 == 0 s'entra en el if
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 0
j: 0
0
El break finalitza el bucle intern
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 0
j: 0
0
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 0
0
El bucle extern encara no ha finalitzat
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 0
0 ⏎
Es fa una altra iteració del bucle extern.
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 1
0 ⏎
El bucle intern torna a començar de nou
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 1
0 ⏎
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 1
j: 0
0 ⏎
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 1
j: 0
0 ⏎
Aquesta vegada la i és diferent de j, per tant no es farà el break,
i el bucle intern encara no finalitza.
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 1
j: 0
0 ⏎
0
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 1
j: 0
0 ⏎
0
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 1
j: 1
0 ⏎
0
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 1
j: 1
0 ⏎
0
Ara sí que es farà el break.
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 1
j: 1
0 ⏎
0 1
El bucle intern finalitza.
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 1
j: 1
0 ⏎
0 1
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 1
0 ⏎
0 1
L'extern encara no ha finalitzat...
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 1
0 ⏎
0 1 ⏎
Es fa una altra iteració de l'extern
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 2
0 ⏎
0 1 ⏎
Torna a començar de zero l'intern
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 2
0 ⏎
0 1 ⏎
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 2
j: 0
0 ⏎
0 1 ⏎
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 2
j: 0
0 ⏎
0 1 ⏎
No es farà el break
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 2
j: 0
0 ⏎
0 1 ⏎
0
No es farà el break
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 2
j: 0
0 ⏎
0 1 ⏎
0
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 2
j: 1
0 ⏎
0 1 ⏎
0
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 2
j: 1
0 ⏎
0 1 ⏎
0
Encara no es fa el break. Continua el bucle intern.
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 2
j: 1
0 ⏎
0 1 ⏎
0 1
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 2
j: 1
0 ⏎
0 1 ⏎
0 1
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 2
j: 2
0 ⏎
0 1 ⏎
0 1
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 2
j: 2
0 ⏎
0 1 ⏎
0 1
Ara sí que es farà el break
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 2
j: 2
0 ⏎
0 1 ⏎
0 1 2
Finalitza el bucle intern
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 2
j: 2
0 ⏎
0 1 ⏎
0 1 2
Finalitza el bucle intern
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 2
0 ⏎
0 1 ⏎
0 1 2
Segueix el bucle extern
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 2
0 ⏎
0 1 ⏎
0 1 2 ⏎
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 3
0 ⏎
0 1 ⏎
0 1 2 ⏎
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 3
0 ⏎
0 1 ⏎
0 1 2 ⏎
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 3
j: 0
0 ⏎
0 1 ⏎
0 1 2 ⏎
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 3
j: 0
0 ⏎
0 1 ⏎
0 1 2 ⏎
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 3
j: 0
0 ⏎
0 1 ⏎
0 1 2 ⏎
0
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 3
j: 0
0 ⏎
0 1 ⏎
0 1 2 ⏎
0
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 3
j: 1
0 ⏎
0 1 ⏎
0 1 2 ⏎
0
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 3
j: 1
0 ⏎
0 1 ⏎
0 1 2 ⏎
0
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 3
j: 1
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 3
j: 1
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 3
j: 2
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 3
j: 2
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 3
j: 2
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1 2
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 3
j: 2
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1 2
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 3
j: 3
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1 2
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 3
j: 3
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1 2
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 3
j: 3
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1 2 3
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 3
j: 3
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1 2 3
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 3
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1 2 3
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 3
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1 2 3 ⏎
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 4
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1 2 3 ⏎
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 4
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1 2 3 ⏎
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 4
j: 0
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1 2 3 ⏎
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 4
j: 0
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1 2 3 ⏎
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 4
j: 0
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1 2 3 ⏎
0
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 4
j: 0
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1 2 3 ⏎
0
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 4
j: 1
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1 2 3 ⏎
0
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 4
j: 1
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1 2 3 ⏎
0
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 4
j: 1
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1 2 3 ⏎
0 1
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 4
j: 1
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1 2 3 ⏎
0 1
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 4
j: 2
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1 2 3 ⏎
0 1
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 4
j: 2
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1 2 3 ⏎
0 1
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 4
j: 2
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1 2 3 ⏎
0 1 2
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 4
j: 2
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1 2 3 ⏎
0 1 2
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 4
j: 3
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1 2 3 ⏎
0 1 2
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 4
j: 3
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1 2 3 ⏎
0 1 2
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 4
j: 3
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1 2 3 ⏎
0 1 2 3
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 4
j: 3
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1 2 3 ⏎
0 1 2 3
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++>) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 4
j: 4
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1 2 3 ⏎
0 1 2 3
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++>) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 4
j: 4
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1 2 3 ⏎
0 1 2 3
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++>) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 4
j: 4
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1 2 3 ⏎
0 1 2 3 4
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++>) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 4
j: 4
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1 2 3 ⏎
0 1 2 3 4
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++>) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 4
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1 2 3 ⏎
0 1 2 3 4
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++>) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 4
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1 2 3 ⏎
0 1 2 3 4 ⏎
S'ha arribat a i: 5, i com no és menor a 5 el bucle
extern finalitza
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++>) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
i: 5
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1 2 3 ⏎
0 1 2 3 4 ⏎
S'ha arribat a i: 5, i com no és menor a 5 el bucle
extern finalitza
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++>) {
System.out.print(j + " ");
if (i == j) {
break;
}
}
System.out.println();
}
// el programa continua per aqui...
0 ⏎
0 1 ⏎
0 1 2 ⏎
0 1 2 3 ⏎
0 1 2 3 4 ⏎
Etiquetar loops
Hem vist que el break només finalitza el bucle més interior; on está col·locat el break.
També és possible finalitzar un bucle més extern amb break, però és necessari posar una etiqueta al bucle
que volem finalitzar.
Per a posar una etiqueta a un bucle, es posa el nom de la etiqueta seguit de dos punts :, just abans del bucle.
nometiqueta:
for (...) {
}
Després, podem indicar al break quin bucle volem finalitzar indicant el nom de la etiqueta just després
de la paraula break.
bucleX:
for (...) {
for (...) {
for (...) {
break bucleX; // finalitza el bucle etiquetat amb 'bucleX'
}
}
}
El següent exemple mostra com finalitzar un bucle etiquetat:
bucle_de_la_i:
for (int i = 0; i < 10; i++) {
bucle_de_la_j:
for (int j = 0; j < 10; j++) {
System.out.print(j + " ");
if (i == j) {
break bucle_de_la_i;
}
}
System.out.println();
}
bucle_de_la_i:
for (int i = 0; i < 10; i++) {
bucle_de_la_j:
for (int j = 0; j < 10; j++) {
System.out.print(j + " ");
if (i == j) {
break bucle_de_la_i;
}
}
System.out.println();
}
bucle_de_la_i:
for (int i = 0; i < 10; i++) {
bucle_de_la_j:
for (int j = 0; j < 10; j++) {
System.out.print(j + " ");
if (i == j) {
break bucle_de_la_i;
}
}
System.out.println();
}
i: 0
bucle_de_la_i:
for (int i = 0; i < 10; i++) {
bucle_de_la_j:
for (int j = 0; j < 10; j++) {
System.out.print(j + " ");
if (i == j) {
break bucle_de_la_i;
}
}
System.out.println();
}
i: 0
bucle_de_la_i:
for (int i = 0; i < 10; i++) {
bucle_de_la_j:
for (int j = 0; j < 10; j++) {
System.out.print(j + " ");
if (i == j) {
break bucle_de_la_i;
}
}
System.out.println();
}
i: 0
j: 0
bucle_de_la_i:
for (int i = 0; i < 10; i++) {
bucle_de_la_j:
for (int j = 0; j < 10; j++) {
System.out.print(j + " ");
if (i == j) {
break bucle_de_la_i;
}
}
System.out.println();
}
i: 0
j: 0
bucle_de_la_i:
for (int i = 0; i < 10; i++) {
bucle_de_la_j:
for (int j = 0; j < 10; j++) {
System.out.print(j + " ");
if (i == j) {
break bucle_de_la_i;
}
}
System.out.println();
}
i: 0
j: 0
0
Aquest break finalitzarà el bucle etiquetat amb bucle_de_la_i, és a dir, l'extern.
bucle_de_la_i:
for (int i = 0; i < 10; i++) {
bucle_de_la_j:
for (int j = 0; j < 10; j++) {
System.out.print(j + " ");
if (i == j) {
break bucle_de_la_i;
}
}
System.out.println();
}
i: 0
j: 0
0
Aquest break finalitzarà el bucle etiquetat amb bucle_de_la_i, és a dir, l'extern.
bucle_de_la_i:
for (int i = 0; i < 10; i++) {
bucle_de_la_j:
for (int j = 0; j < 10; j++) {
System.out.print(j + " ");
if (i == j) {
break bucle_de_la_i;
}
}
System.out.println();
}
// el programa continua aquí...
i: 0
j: 0
0
Sentència continue
La sentència continue fa que un bucle se salti la iteració actual i vagi a la següent.
Es pot utilitzar amb tots els tipus de bucles:
Dintre del bucle-for, la sentència continue fa que immediatament es vagi
directament a la sentència de modificació.
Dinre del while/do-while, fa que es vagi directament a la condició.
Al següent exemple, només els nombres parells s'imprimeixen. Els senars se salten:
int n = 5;
for (int i = 0; i < n; i++) {
if (i % 2 != 0) {
continue;
}
System.out.print(i + " ");
}
System.out.print("Final");
int n = 5;
for (int i = 0; i < n; i++) {
if (i % 2 != 0) {
continue;
}
System.out.print(i + " ");
}
System.out.print("Final");
int n = 5;
for (int i = 0; i < n; i++) {
if (i % 2 != 0) {
continue;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
int n = 5;
for (int i = 0; i < n; i++) {
if (i % 2 != 0) {
continue;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 0
El 0 és parell, no s'entra a l'if
int n = 5;
for (int i = 0; i < n; i++) {
if (i % 2 != 0) {
continue;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 0
int n = 5;
for (int i = 0; i < n; i++) {
if (i % 2 != 0) {
continue;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 0
int n = 5;
for (int i = 0; i < n; i++) {
if (i % 2 != 0) {
continue;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 0
0
int n = 5;
for (int i = 0; i < n; i++) {
if (i % 2 != 0) {
continue;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 1
0
L'1 és senar, sí que s'entra a l'if
int n = 5;
for (int i = 0; i < n; i++) {
if (i % 2 != 0) {
continue;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 1
0
El continue fa que se salti la iteració actual i vagi directament a la modificació
int n = 5;
for (int i = 0; i < n; i++) {
if (i % 2 != 0) {
continue;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 1
0
int n = 5;
for (int i = 0; i < n; i++) {
if (i % 2 != 0) {
continue;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 1
0
int n = 5;
for (int i = 0; i < n; i++) {
if (i % 2 != 0) {
continue;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 2
0
El 2 és parell
int n = 5;
for (int i = 0; i < n; i++) {
if (i % 2 != 0) {
continue;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 2
0
int n = 5;
for (int i = 0; i < n; i++) {
if (i % 2 != 0) {
continue;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 2
0
int n = 5;
for (int i = 0; i < n; i++) {
if (i % 2 != 0) {
continue;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 2
0 2
int n = 5;
for (int i = 0; i < n; i++) {
if (i % 2 != 0) {
continue;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 3
0 2
El 3 és senar
int n = 5;
for (int i = 0; i < n; i++) {
if (i % 2 != 0) {
continue;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 3
0 2
Directament a la modificació
int n = 5;
for (int i = 0; i < n; i++) {
if (i % 2 != 0) {
continue;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 3
0 2
int n = 5;
for (int i = 0; i < n; i++) {
if (i % 2 != 0) {
continue;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 3
0 2
int n = 5;
for (int i = 0; i < n; i++) {
if (i % 2 != 0) {
continue;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 4
0 2
El 4 és parell. No s'entra a l'if
int n = 5;
for (int i = 0; i < n; i++) {
if (i % 2 != 0) {
continue;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 4
0 2
int n = 5;
for (int i = 0; i < n; i++) {
if (i % 2 != 0) {
continue;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 4
0 2
int n = 5;
for (int i = 0; i < n; i++) {
if (i % 2 != 0) {
continue;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 4
0 2 4
El bucle acaba quan i: 5 ja no és menor a n: 5
int n = 5;
for (int i = 0; i < n; i++) {
if (i % 2 != 0) {
continue;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 5
0 2 4
int n = 5;
for (int i = 0; i < n; i++) {
if (i % 2 != 0) {
continue;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
0 2 4
int n = 5;
for (int i = 0; i < n; i++) {
if (i % 2 != 0) {
continue;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
0 2 4 FINAL
En la pràctica la sentència continue s'utilitza molt poc. Normalment es pot reescriure el bucle
per a que se salti la iteració sense utilitzar continue. L'anterior programa es podria haver escrit així:
int n = 5;
for (int i = 0; i < n; i++) {
if (i % 2 == 0) {
System.out.print(i + " ");
}
}
Què imprimeix el següent codi?
for (int i = 0; i < 11; i++) {
if (i % 2 != 0) {
continue;
}
System.out.print(i + " ");
}
0 2 4 6 8 10
1 3 5 7 9
0 2 4 6 8 10 11
0
Quants números imprimex el següent programa?
for (int i = 0; i < 5; i++) {
System.out.println(i);
if (i < 3) {
continue;
} else {
for (int j = 0; j < 5; j++) {
System.out.println(j);
}
}
}
15
Gàlib
Sentència return
La sentència return finalitza l'execució del programa i es pot utilitzar a qualsevol lloc del codi font.
Al següent exemple, s'imprimeixen tots els nombres fins a trobar el número 3, moment en el que no finalitza només el bucle sinó el programa sencer:
int n = 5;
for (int i = 0; i < n; i++) {
if (i == 3) {
return;
}
System.out.print(i + " ");
}
System.out.print("Final");
int n = 5;
for (int i = 0; i < n; i++) {
if (i == 3) {
return;
}
System.out.print(i + " ");
}
System.out.print("Final");
int n = 5;
for (int i = 0; i < n; i++) {
if (i == 3) {
return;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
int n = 5;
for (int i = 0; i < n; i++) {
if (i == 3) {
return;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 0
El 0 no és 3, no s'entra a l'if
int n = 5;
for (int i = 0; i < n; i++) {
if (i == 3) {
return;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 0
int n = 5;
for (int i = 0; i < n; i++) {
if (i == 3) {
return;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 0
int n = 5;
for (int i = 0; i < n; i++) {
if (i == 3) {
return;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 0
0
int n = 5;
for (int i = 0; i < n; i++) {
if (i == 3) {
return;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 1
0
L'1 no és igual a 3, no entra a l'if
int n = 5;
for (int i = 0; i < n; i++) {
if (i == 5) {
return;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 1
0
int n = 5;
for (int i = 0; i < n; i++) {
if (i == 5) {
return;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 1
0
int n = 5;
for (int i = 0; i < n; i++) {
if (i == 3) {
return;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 1
0 1
int n = 5;
for (int i = 0; i < n; i++) {
if (i == 3) {
return;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 2
0 1
El 2 no és igual a 3, no entra a l'if
int n = 5;
for (int i = 0; i < n; i++) {
if (i == 3) {
return;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 2
0 1
int n = 5;
for (int i = 0; i < n; i++) {
if (i == 3) {
return;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 2
0 1
int n = 5;
for (int i = 0; i < n; i++) {
if (i == 3) {
return;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 2
0 1 2
int n = 5;
for (int i = 0; i < n; i++) {
if (i == 3) {
return;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 3
0 1 2
El 3 és el número que estem buscant
int n = 5;
for (int i = 0; i < n; i++) {
if (i == 3) {
return;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 3
0 1 2
Per tant executem la instrucció de retorn i el programa finalitza inmediatament
int n = 5;
for (int i = 0; i < n; i++) {
if (i == 3) {
return;
}
System.out.print(i + " ");
}
System.out.print("Final");
n: 5
i: 3
0 1 2
En la pràctica la sentència return no es sol utilitzar dins de bucles. Normalment es pot reescriure el bucle
per a que se salti les execucions amb break i s'acabi el programa per si sol. L'anterior programa es podria haver escrit així:
int n = 5;
for (int i = 0; i < n; i++) {
if (i == 3) {
break;
}
else if (i % 2 == 0) {
System.out.print(i + " ");
}
}
if(i != 3) System.out.print("Final");
Què imprimeix el següent codi?
for (int i = 0; i < 11; i++) {
if (i % 2 != 0) {
return;
}
System.out.print(i + " ");
}
0 2 4 6 8 10
1 3 5 7 9
0 2 4 6 8 10 11
0
Quants números imprimex el següent programa?
for (int i = 0; i < 5; i++) {
System.out.println(i);
if (i < 3) {
continue;
} else {
return;
}
}
4