W3docs

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:

  1. Una condición que pueda volverse falsa. Un true constante se ejecuta para siempre.
  2. 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 completo
  • continue — 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

java— editable, runs on the server

Qué viene después

Un primo cercano de while es el bucle do-while, que siempre ejecuta el cuerpo al menos una vez.

Práctica

Práctica
¿Cuántas veces imprimirá este bucle? int i = 5; while (i < 5) { System.out.println(i); i++; }
¿Cuántas veces imprimirá este bucle? int i = 5; while (i < 5) { System.out.println(i); i++; }
Was this page helpful?