1. Introducción al bucle do-while
Imagina que estás escribiendo un programa que adivina el número pensado por el usuario. Hay que pedir el número al menos una vez y repetir la petición hasta acertarlo. Si compruebas la condición por adelantado, un while normal puede no entrar en el bucle en absoluto.
Aquí es donde ayuda do-while. A diferencia de while, siempre ejecutará el cuerpo del bucle al menos una vez — incluso si la condición es falsa desde el principio. Es como recibir un chicle en la caja, independientemente de la compra.
Sintaxis de do-while
Todo es sencillo: un «par» más de palabras clave en Java.
do
{
// Cuerpo del bucle: este código se ejecutará al menos una vez
}
while (condition);
do-while
¡Presta atención al punto y coma ; al final después del paréntesis de la condición! En un while normal no está, y aquí sí — una trampa clásica para principiantes.
Descripción de los pasos del bucle do-while
- Entrada al cuerpo del bucle (siempre al menos una vez).
- Comprobación de la condición.
- Si la condición es verdadera — repetir el cuerpo.
- Si la condición es falsa — salir del bucle.
2. Diferencia con el while normal
Recordemos el escenario básico de trabajo de un while normal:
while (condition)
{
// Cuerpo del bucle
}
¡El cuerpo no se ejecutará ni una vez si la condición es falsa desde el principio!
Ahora, un ejemplo con do-while:
do
{
// Cuerpo del bucle
}
while (condition);
¡El cuerpo del bucle se ejecutará al menos una vez, incluso si la condición es falsa desde el inicio!
Ilustremos la diferencia con código:
// while normal
int count = 0;
while (count > 0)
{
System.out.println("count = " + count);
count--;
}
// No se imprimirá nada
// do-while
int count2 = 0;
do
{
System.out.println("count2 = " + count2);
count2--;
}
while (count2 > 0);
// Imprimirá "count2 = 0", aunque la condición sea falsa
A veces esto parece una «rareza», pero es exactamente el comportamiento que se necesita con la entrada del usuario y la validación de datos.
3. Escenarios prácticos de uso de do-while
¿Dónde aparece este bucle con más frecuencia?
Validación de datos
Un escenario habitual: pedimos al usuario que introduzca datos correctos (por ejemplo, una contraseña de al menos 6 caracteres) y repetimos la solicitud hasta que todo sea correcto.
String password;
do
{
System.out.print("Introduce una nueva contraseña (mínimo 6 caracteres): ");
password = console.nextLine();
}
while (password.length() < 6);
System.out.println("¡Contraseña aceptada!");
El cuerpo del bucle se ejecutará al menos una vez — incluso si el usuario introduce una contraseña larga de inmediato.
Menús en aplicaciones de consola
Un patrón frecuente: mostrar el menú, esperar un comando y salir solo mediante un comando específico.
String command;
do
{
System.out.println("Menú:");
System.out.println("1. Mostrar un saludo");
System.out.println("2. Salir");
System.out.print("Elige una acción: ");
command = console.nextLine();
if (command.equals("1"))
{
System.out.println("¡Hola, mundo!");
}
else if (!command.equals("2"))
{
System.out.println("Comando desconocido.");
}
}
while (!command.equals("2"));
System.out.println("¡Adiós!");
4. Tabla: comparación entre while y otros bucles
| Tipo de bucle | Comprobación de la condición | Cuántas veces puede ejecutarse el cuerpo | Cuándo es apropiado |
|---|---|---|---|
|
Antes | 0 o más veces | Cuando se desconoce de antemano el número de repeticiones |
|
Después | 1 o más veces | Cuando es importante ejecutar el cuerpo al menos una vez |
|
Antes | 0 o más veces | Cuando se conoce el número de iteraciones |
GO TO FULL VERSION