W3docs

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 scope

Declá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

java— editable, runs on the server

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.

Práctica

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