1. Introducción
A menudo se da la situación en la que no necesitas recorrer todas las iteraciones de un bucle hasta el final, sino salir de él antes de tiempo — por ejemplo, en cuanto has encontrado el elemento buscado. En otros casos, necesitas saltarte parte del trabajo y pasar al siguiente paso (por ejemplo, has leído los datos y quieres omitir su procesamiento). Eso es precisamente el control del flujo dentro de un bucle.
Los operadores break y continue en Java están pensados precisamente para esto. Veamos cómo funcionan y para qué sirven en tareas reales.
2. Operador break: «¡Alto, máquina!»
Teoría y sintaxis
El operador break se utiliza para salir inmediatamente del bucle, estés donde estés en su cuerpo. En cuanto la ejecución del programa llega a break, el bucle termina en ese instante y la ejecución continúa con la primera línea de código después del bucle.
while (uslovie)
{
if (kakoe-to_uslovie)
{
break;
}
// resto del código del bucle
}
Lo mismo funciona para for y para do-while:
for (int i = 0; i < 10; i++)
{
if (kakoe-to_uslovie)
{
break;
}
// resto del código del bucle
}
Ejemplo 1: comprobación de si un número es primo
Un número es primo si solo es divisible por 1 y por sí mismo. Necesitamos comprobar si un número es primo: recorrer todos los posibles divisores de 2 a n-1. Si resulta que nuestro número es divisible por un divisor, ya no hace falta seguir comprobando — ¡el número no es primo! Se puede terminar el bucle.
Ejemplo:
int number = 111;
boolean found = false;
for (int i = 2; i < number; i++)
{
if (number % i == 0)
{
found = true;
System.out.println("Hemos encontrado un divisor " + i );
break; // Detenemos el bucle, no hace falta buscar nada más
}
}
if (!found)
{
System.out.println("No se encontró divisor - el número es primo.");
}
Ejemplo 2: validación de la entrada del usuario
Escribamos una pequeña aplicación, por ejemplo, un cuestionario interactivo para recopilar datos:
while (true)
{
System.out.print("Introduce tu edad: ");
if (console.hasNextInt())
{
int age = console.nextInt();
if (age > 0)
{
System.out.println("¡Estupendo! Tu edad: " + age);
break; // los datos son correctos - salimos
}
else
{
System.out.println("¡Error! Introduce una edad positiva.");
}
}
else
{
System.out.println("¡Error! Introduce un número.");
console.nextLine(); // consumimos la entrada no válida
}
}
Para qué sirve:
En ocasiones hay que ejecutar un bucle indefinidamente (o durante mucho tiempo) hasta que el usuario introduzca datos correctos. En cuanto ocurre el evento que nos vale — aplicamos break y salimos definitivamente del bucle.
3. Operador continue: «¡El siguiente, por favor!»
Teoría y sintaxis
A diferencia de break, el operador continue no termina todo el bucle, sino que solo interrumpe la iteración actual: todo lo que esté escrito después de continue en el cuerpo del bucle NO se ejecuta — se pasa a la siguiente iteración.
for (int i = 0; i < 10; i++)
{
if (uslovie)
{
continue;
}
// esta parte se ejecutará solo si continue no se activó
}
Ejemplo 3: omitir los números pares
Imagina que necesitas imprimir solo los números impares del intervalo. Los pares deben omitirse.
for (int i = 1; i <= 10; i++)
{
if (i % 2 == 0)
{
continue; // si el número es par - ¡nos saltamos todo lo que viene debajo!
}
System.out.println("Número impar: " + i);
}
Qué está pasando:
Cuando i = 2, 4, 6... el bucle se encuentra con continue y salta inmediatamente a la siguiente iteración, sin ejecutar System.out.println.
Visualización paso a paso:
| i | i % 2 == 0 | Acción |
|---|---|---|
| 1 | false | imprimir, sin continue |
| 2 | true | continue, sin imprimir |
| 3 | false | imprimir, sin continue |
| ... | ... | ... |
Los operadores break y continue se usan muy a menudo. De hecho, en uno de cada dos bucles. Te gustará trabajar con ellos.
GO TO FULL VERSION