Programación en Java/Sentencia while

De Wikilibros, la colección de libros de texto de contenido libre.
← Estructuras de iteración Sentencia while Sentencia do-while →


La sentencia while es la más sencilla de las estructuras de iteración. La iteración continuará hasta que su condición sea falsa.

 while ( condición ) sentencia ;

La condición tiene que tomar un valor booleano (verdadero o falso). Si este valor es verdadero, se ejecutará la sentencia. Concluida esta acción se vuelve a evaluar la condición. Proseguirán los ciclos hasta que la condición no cambie a falso.

Esta es una estructura de iteración preprueba, es decir primero se evalúa la condición antes de realizar cualquier acción. Si de entrada la condición es falsa nunca ejecutará el conjunto de sentencias.

  int n = 0;
  while ( n > 0 ) System.out.println("Esto nunca lo verás");

Dentro del conjunto de sentencia en el que el supuesto o dicho controla, debe existir alguna que cambie el valor de la condición que se está evaluando.

   boolean prueba = true;
   while ( prueba ) {
         System.out.println("Esto lo verás una vez");
         prueba = false;
   }

Entraríamos en un ciclo infinito si nunca se modifica la condición y permanece verdadera.

   boolean prueba = true;
   while ( prueba ) {
         System.out.println("Esto lo verás muchas veces");
   }

Generalmente esta estructura se utiliza en situaciones en donde desconocemos la cantidad de ciclos que se deben ejecutar para producir un resultado. Mostraremos como se utiliza en estas circunstancias con el ejemplo de pase a binario, mostrado en el capítulo anterior.

Teníamos que transformar un número decimal a binario. El programa en java nos queda de esta manera:

 public class Dec2Bin{
    public static void main(String args[]){
       int decimal = 252222;
       String binario = "";
       while ( decimal > 0 ) {
         binario = decimal % 2 + binario;
         decimal /= 2;
       }
       System.out.println(binario);   
    }
 }

Como no sabemos de antemano cuantas vueltas debe dar, simplemente esperamos que el resultado de las divisiones sucesivas sea igual a cero.

También se pueden realizar ciclos con while en donde ya conocemos, antes de entrar en la estructura, cuantas vueltas debe dar para terminar. Para esto nos auxiliamos con un contador de vueltas. Previamente tiene que inicializarse antes de ingresar al ciclo. Luego en cada vuelta se modificara según la lógica del algoritmo.

Realicemos el programa que despliegue por pantalla cinco líneas de caracteres.

 public class Cuadrado{
    public static void main(String args[]){
       int contador = 1;
       while ( contador <= 5 ) {
          System.out.println("*****\n");
          contador++;
       }
    }
 }

En este algoritmo, inicializamos el contador a 1 y luego en cada ciclo se incrementa. La condición de corte tiene como objetivo no permitir mas vueltas si el contador superó el valor 5.


Para tener varias veces el asterisco sin necesidad de imprimirlo asi "*****", utilizamos otro ciclo while y otra variable que inicializaremos dentro del ciclo para que se cumpla la cual llamaremos "contador2", obtendremos el mismo resultado que el anterior, el codigo quedaria asi:

public class Cuadrado
{
    public static void main (String args [])
    {
        int contador = 1;
        while (contador <= 5)
        {
           int contador2 = 1;
            while (contador2 <= 5)
            {
                System.out.print ("*");
                contador2++;
            } 
            System.out.println ();
            contador++;
        }
    }
}

(copian la parte que queda fuera del recuadro punteado al principio, y la llave que queda fuera al final del mismo, lo pegan en ready to program y lo corren)