Programación en Java/Sentencia do-while

De Wikilibros, la colección de libros de texto de contenido libre.
Saltar a: navegación, buscar
← Sentencia while Sentencia do-while Sentencia for →

La sentencia de iteración do-while es de tipo posprueba. Primero realiza las acciones luego pregunta. La sintaxis es la siguiente:

 do sentencia while ( condición );

Observamos que es como un while pero al revés. Primeramente se ejecuta la sentencia y luego evalúa la condición. Si la expresión de la condición es verdadera vuelve a dar un ciclo. De lo contrario, termina. Esto nos garantiza que la sentencia se ejecute al menos una vez.

 do System.out.println("Lo veras una vez");
 while ( false );

Resulta útil para los casos en donde tendremos que realizar ciertas acciones antes de verificar una condición.

Realicemos un programa que cuente la cantidad de dígitos que posee un número. Para ello tendremos que dividir por diez el número que nos han dado, hasta que el resultado se vuelva cero. Entonces recurrimos al while para realice los ciclos necesarios.

public class CuentaDigitos{
   public static void main(String args[]){
      int número = 4557888;
      int dígitos = 0;
      while ( número > 0 ) {
          número /=10;
          dígitos++;
      }
      System.out.println(dígitos);
   }
}

¿Qué ocurre si el número que nos dan es el cero? El resultado nos dará cero. Obviamente es erróneo, debería devolver un dígito. Pero no entra en el ciclo debido a que de entrada no satisface la condición. Podríamos implementar una solución "ad hoc".

 número /=10;
 dígitos++;
 while ( número > 0 ) {
       número /=10;
       dígitos++;
 }

Realizamos primeramente las operaciones y luego entramos en el bucle si se verifica la condición. Pero no hace falta mirar mucho para darnos cuenta que es una solución poco elegante. En realidad quedará mejor con la sentencia do-while

public class CuentaDigitos{
   public static void main(String args[]){
      int número = 4557888;
      int dígitos = 0;
      do {
         número /=10;
         dígitos++;
      }
      while ( número > 0 );
      System.out.println(dígitos);
   }
}