En el capítulo anterior, mostré como funcionaba el bucle while en Java. En esta ocasión, te mostraré otro tipo de bucle muy parecido, el bucle do while.
Diferencia entre el bucle while y do while de Java
La diferencia entre estos dos bucles está en que el bucle do while, siempre se va a ejecutar al menos una vez. Este comportamiento no ocurre con el bucle while, ya que si desde un principio, su expresión es false, no se ejecuta ni una sola vez.
Sintaxis de un bucle do while de Java
Veamos, antes de pasar a los ejemplos, la sintaxis básica del bucle do while de Java.
do { //Código del bucle } while (condición);
El bucle do while empieza con la palabra reservada do. Con ello, empieza un bloque de código. En dicho bloque, colocaremos todo el código del bucle, incremento o decremento incluido.
Finalmente, cuando acabemos de escribir todo el código, debemos utilizar la palabra while junto con la expresión. Esto se finaliza con un punto y coma.
Si traducimos la palabra "do" al español, obtenemos un "hacer". De "while", "mientras".
Con estas dos palabras, se puede formar una frase "do this while" (haz esto mientras).
Por lo tanto, con "do", le indicamos a Java, "haz" lo que te indico en este código.
Después de hacerlo, comprueba la expresión, el "mientras". Así pues, este es el motivo de que se ejecute al menos una vez, independientemente de que se cumpla la expresión del while o no, porque se ejecuta el código primero y consulta la expresión después según el flujo de ejecución.
Ejemplo de bucle while vs do while
Veamos un ejemplo de bucle while que nunca se ejecuta.
public class Main { public static void main(String[] args) { //--> Bucle while int i = 15; //iterador while (i < 10) { System.out.println("El valor es: " + i); i++; //incremento } } }
En este caso, puesto que la variable "i" vale 15 inicialmente, nunca se cumple la condición del bucle (i menor que 10).
En cambio, si usamos un bucle do while, aunque la condición evalúa como false desde un principio, se ejecuta una vez. Esa es la característica especial del bucle do while.
public class Main { public static void main(String[] args) { //--> Bucle do while int i = 15; //iterador do { System.out.println("El valor es: " + i); i++; //incremento } while (i < 10); // expresión } }
Resultado en la consola
El valor es: 15
En el caso de que un bucle do while evalúe su expresión como true desde el principio, se va a ejecutar con total normalidad, como si fuera un bucle while normal.
public class Main { public static void main(String[] args) { //--> Bucle do while int i = 5; //iterador do { System.out.println("El valor es: " + i); i++; //incremento } while (i < 10); // expresión } }
Resultado en la consola
El valor es: 5
El valor es: 6
El valor es: 7
El valor es: 8
El valor es: 9
Diagrama de flujo del bucle do while de Java
El diagrama de flujo del bucle do while, varía un poco de el del bucle while.

Todo el temario del curso Java aquí.
Ejercicios de Java
Te dejo unos ejercicios para que practiques con el bucle do while de Java. Las soluciones las encontrarás en el siguiente capítulo del curso.
- Elige la opción correcta sobre el siguiente código (la idea es que no ejecutes nada hasta elegir una opción).
- Se imprime "El valor es: 0".
- No se imprime nada.
- Se imprime del "El valor es: ", del 0 al 9.
public class Main { public static void main(String[] args) { //--> Bucle do while int i = 0; //iterador do { System.out.println("El valor es: " + i); i++; //incremento } while (i > 10); // expresión } }
- Crea un bucle do while que imprima esto en la consola:
Resultado en la consola
El valor es: -1
El valor es: -2
El valor es: -3
El valor es: -4
El valor es: -5
- Arregla los fallos en este código, si los hay.
do { System.out.println("El valor es: " + i); i++ } while (i > 10) }
Soluciones de los ejercicios del capítulo anterior
- El código era correcto, no había nada mal.
while (i > 10) { System.out.println("El valor es: " + i); }
- El código no se ejecuta. La condición del bucle while no se cumple, 1 no es mayor que 5.
- Se ejecuta 4 veces. Desde "El valor es: 1" hasta "El valor es 4".
- El bucle es infinito, puesto que le falta el incremento que lo haga terminar.
- Aquí tienes mi solución:
public class Main { public static void main(String[] args) { //--> Bucle while int i = 100; //iterador while (i < 126) { System.out.println("El valor es: " + i); i++; } } }