Bucle do...while en Java
Usa el bucle do...while en Java para ejecutar un bloque al menos una vez antes de comprobar la condición.
El bucle do/while es la imagen especular del bucle while: primero ejecuta el cuerpo y luego comprueba la condición. El resultado es un bucle que garantiza ejecutarse al menos una vez, incluso si la condición era falsa desde el principio. Esta página cubre la sintaxis, en qué se diferencia de while, cuándo usarlo y un error común relacionado con el alcance de variables.
Sintaxis
do {
// body — runs at least once
} while (condition);Observa el punto y coma al final de while (condition) — es fácil de pasar por alto, y el compilador te lo hará saber si lo omites.
Un equivalente directo al ejemplo de contador con while:
int i = 1;
do {
System.out.println(i);
i++;
} while (i <= 5);Salida: 1 2 3 4 5 — igual que la versión con while, pero el cuerpo siempre se ejecuta primero.
Cuando la condición comienza siendo falsa
Aquí es donde do/while se diferencia de while:
int i = 10;
do {
System.out.println(i); // prints 10 once
i++;
} while (i < 5);El cuerpo se ejecuta una vez, luego la condición 10 < 5 es falsa y el bucle termina. Un while normal habría omitido el cuerpo por completo.
Cuándo usar do/while
El caso de uso clásico es la validación de entrada — debes leer la entrada primero para saber si es válida:
import java.util.Scanner;
Scanner s = new Scanner(System.in);
int n;
do {
System.out.print("Enter a positive number: ");
n = s.nextInt();
} while (n <= 0);Otra aplicación natural son los bucles de menú — siempre quieres mostrar el menú al menos una vez:
int choice;
do {
showMenu();
choice = readChoice();
handle(choice);
} while (choice != 0);En ambos casos, expresar el bucle con un while simple implicaría duplicar el trabajo de la primera iteración fuera del bucle o usar una variable centinela. do/while es más limpio.
Una nota sobre el alcance de variables
Una variable declarada dentro del cuerpo no es visible para la condición del while:
do {
int x = readValue();
} while (x > 0); // compile error: x not in scopeDeclárala fuera:
int x;
do {
x = readValue();
} while (x > 0);Con qué frecuencia lo usarás en la práctica
En la práctica, do/while es el menos utilizado de los tres bucles de Java. La mayoría de los bucles saben si deben ejecutarse antes de la primera iteración, por lo que while y for los cubren. Pero cuando "ejecutar una vez y luego quizás repetir" es la descripción natural, do/while es la expresión más clara.
Un ejemplo práctico
Qué viene después
El bucle más común en Java es el bucle for, que agrupa un contador, una condición y un paso de actualización en una sola cabecera ordenada.