break sale del bucle. continue salta a la vuelta siguiente. Suena simple, y lo es, salvo por dos detalles: el continue en un while puede colgar el programa, y con etiquetas los dos pueden actuar sobre un bucle de fuera.
También te puede interesar
break
for (int i = 0; i < 10; i++) {
if (i == 6) break;
System.out.print(i + " ");
}salida0 1 2 3 4 5
Al llegar a 6 se sale del bucle entero y sigue la línea de después. El 6 no se imprime, porque el break está antes del println.
continue
for (int i = 0; i < 10; i++) {
if (i % 2 == 0) continue;
System.out.print(i + " ");
}salida1 3 5 7 9
continue no sale: abandona esta vuelta y va a la siguiente. En un for «la siguiente» incluye ejecutar el incremento, así que el bucle avanza con normalidad.
El continue que cuelga un while
int i = 0;
while (i < 10) {
System.out.println("i: " + i);
if (i == 2) continue; // ¡se salta el i++ de abajo!
i++;
}while, el incremento es una línea más del cuerpo, y continue se la salta: al llegar a 2, vuelve arriba con i todavía en 2, comprueba la condición, entra otra vez, y así para siempre. Hay que pararlo con Ctrl+C. En el for esto no pasa porque el incremento vive en la cabecera del bucle y continue sí lo ejecuta.Si necesitas continue en un while, incrementa antes:
int i = 0;
while (i < 10) {
i++;
if (i == 3) continue;
System.out.print(i + " ");
}salida1 2 4 5 6 7 8 9 10
Etiquetas: romper dos bucles a la vez
Un break normal solo sale del bucle que lo contiene. Cuando buscas algo dentro de una matriz y lo encuentras, lo que quieres es salir de los dos:
buscar:
for (int f = 0; f < 3; f++) {
for (int c = 0; c < 3; c++) {
if (f * 3 + c == 4) {
System.out.println("encontrado en (" + f + "," + c + ")");
break buscar;
}
}
}salidaencontrado en (1,1)
La etiqueta es un nombre seguido de dos puntos, delante del bucle de fuera. break buscar; sale de ese bucle, no del de dentro. Con continue etiqueta pasa lo análogo: se va a la vuelta siguiente del bucle de fuera.
for (int f = 0; f < 3; f++) {
for (int c = 0; c < 3; c++) {
if (c == 1) continue;
System.out.print(f + "" + c + " ");
}
}salida00 02 10 12 20 22
goto que tiene Java, y se usan poco a propósito. Si te hacen falta muchas, suele ser señal de que ese bucle doble pide salir a un método aparte: ahí un return hace el mismo trabajo y se entiende mejor.| Quieres… | Usa |
|---|---|
| Dejar de iterar del todo | break |
| Saltarte esta vuelta | continue |
| Salir de un bucle de fuera | break etiqueta |
| Lo mismo, pero siguiendo | continue etiqueta |
| Salir del método entero | return |
Más información en inglés: Break and continue in Java.
Todo el código se compiló y se ejecutó con Java 25 LTS en un contenedor limpio antes de publicar esta página; las salidas están copiadas de esa ejecución.