Bucle while en Java
Repite código en Java con el bucle while, incluyendo comprobación de condición y bucles infinitos.
El bucle while es la forma más sencilla de repetir un bloque de código en Java. Mientras su condición sea true, el cuerpo se ejecuta de nuevo. Cuando la condición se convierte en false, el bucle termina y la ejecución continúa después del bucle.
Sintaxis
while (condition) {
// body — runs while condition is true
}Un ejemplo mínimo — contar del 1 al 5:
int i = 1;
while (i <= 5) {
System.out.println(i);
i++;
}La condición i <= 5 se comprueba antes de cada iteración. Cuando i llega a 6, la condición es falsa y el bucle termina.
Las dos partes que debes recordar
Todo bucle while necesita dos cosas para terminar:
- Una condición que pueda volverse falsa. Un
trueconstante se ejecuta para siempre. - Algo dentro del cuerpo que cambie la condición. Si olvidas actualizar
i, el bucle es infinito.
Un error común de principiantes:
int i = 1;
while (i <= 5) {
System.out.println(i);
// forgot i++ — loop runs forever
}Si tu programa se cuelga, busca aquí primero. Pulsar Ctrl+C en la terminal detiene un programa desbocado.
El otro error clásico de desfase por uno es el operador de comparación. while (i <= 5) con i empezando en 1 se ejecuta cinco veces; while (i < 5) se ejecuta solo cuatro. Decide si el valor del límite debe incluirse antes de escribir la condición.
La condición se comprueba primero
Si la condición es falsa desde el principio, el cuerpo nunca se ejecuta en absoluto — ni siquiera una vez:
int i = 10;
while (i < 5) {
System.out.println(i); // never executes
}Esa es la diferencia clave respecto al bucle do/while, que siempre ejecuta el cuerpo al menos una vez.
Cuándo while es la opción correcta
Un bucle for es mejor cuando conoces el número de iteraciones de antemano (for (int i = 0; i < 10; i++)). Un bucle while es mejor cuando la condición de parada no está ligada a un contador — está ligada a algún cambio de estado, y no sabes de antemano cuántas iteraciones serán necesarias.
Leer hasta el final de la entrada:
import java.util.Scanner;
Scanner s = new Scanner(System.in);
while (s.hasNextLine()) {
String line = s.nextLine();
System.out.println("got: " + line);
}Reintentar hasta tener éxito:
boolean connected = false;
int attempts = 0;
while (!connected && attempts < 5) {
connected = tryConnect();
attempts++;
}Procesar una cola:
while (!queue.isEmpty()) {
Task t = queue.poll();
t.run();
}Bucles infinitos intencionados
A veces quieres que el bucle se ejecute para siempre — típicamente en bucles de eventos, servidores o simulaciones — y sales con un break:
while (true) {
String input = readCommand();
if (input.equals("quit")) {
break;
}
handle(input);
}while (true) es más idiomático que while (1 == 1) u otros trucos.
Usar break y continue
Dentro de cualquier bucle puedes usar:
break— salir del bucle por completocontinue— saltar el resto de la iteración actual y volver a comprobar la condición
Ambos se tratan en detalle en break y continue.
Un ejemplo trabajado
Qué viene después
Un primo cercano de while es el bucle do-while, que siempre ejecuta el cuerpo al menos una vez.