break i continue

Les sentències de ramificació permeten alterar el fluxe d'execució estàndard d'un mètode, un bucle, o un switch.

Aprendràs:

A utilitzar la sentència break A utilitzar la sentència continue

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--; } int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } 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--; } i: 10 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } i: 10 10 no és igual a 5 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } i: 10 10 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } i: 10 10 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } i: 9 10 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } i: 9 10 9 no és igual a 5 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } i: 9 10 9 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } i: 9 10 9 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } i: 8 10 9 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } i: 8 10 9 8 no és igual a 5 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } i: 8 10 9 8 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } i: 8 10 9 8 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } i: 7 10 9 8 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } 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--; } i: 7 10 9 8 7 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } i: 7 10 9 8 7 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } i: 6 10 9 8 7 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } 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--; } i: 6 10 9 8 7 6 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } i: 6 10 9 8 7 6 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } i: 5 10 9 8 7 6 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } 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--; } 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--; } i: 5 10 9 8 7 6 5 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } // el programa continuaria aqui... i: 5 10 9 8 7 6 5

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:

Al següent exemple, només els nombres parells s'imprimeixen. Els imparells se salten:

int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } n: 5 int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } 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 + " "); } n: 5 i: 0 int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } n: 5 i: 0 int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } n: 5 i: 0 0 int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } n: 5 i: 1 0 L'1 és parell, 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 + " "); } 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 + " "); } n: 5 i: 1 0 int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } n: 5 i: 1 0 int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } 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 + " "); } n: 5 i: 2 0 int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } n: 5 i: 2 0 int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } 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 + " "); } n: 5 i: 3 0 2 El 3 és imparell int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } 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 + " "); } 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 + " "); } 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 + " "); } 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 + " "); } 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 + " "); } 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 + " "); } 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 + " "); } 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 + " "); } // program goes here.... n: 5 0 2 4

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