Bucles for, while y do while en Java

En Java hay 3 tipos de sentencias de control (for, while y do while) para ejecutar un código un número determinado de veces y aunque sabiendo usar un solo tipo te las puedes arreglar para hacer cualquier cosa siempre hay un tipo de bucle más apropiado para cada situación, si no solo habría uno ¿no?

Bucle while en java

El bucle while es tan sencillo como decir mientras se cumpla la condición se ejecuta el código que haya dentro del bucle, y en el momento que ya no se cumpla esa condición se sale del bucle.


while (condicion) {
    ...
}

Por lo tanto este tipo de bucle es el idóneo cuando necesitamos que un fragmento de código se repita un número de veces variable.

Ejemplo de uso del bucle while

Un ejemplo claro de un bucle que no sabemos cuantas veces se va a ejecutar es cuando le pedimos al usuario que introduzca algo por teclado, porque se puede equivocar o introducirlo mal porque le apetezca.


public int leerNumero() {
    Scanner sc = new Scanner(System.in);
    int numero = -1;

    while (numero <= 0) {
        System.out.println("Introduce un numero positivo: ");
        numero = sc.nextInt();
    }

    sc.close();

    return numero;
}   

En este ejemplo no se hace control de excepciones por lo que si el usuario mete algo que no se un número el programa fallaría.

Bucle do while en java

El bucle do while es prácticamente igual al while, pero con la diferencia de que el código del bucle se ejecutara al menos una vez ya que la comprobación se hace después de cada iteración y no antes como en el caso del while.


do {
    ...
} while (condicion)

Este tipo de bucle es el idóneo cuando necesitamos que un fragmento de código se ejecute al menos una vez y dependiendo de las circunstancias puede ser que se vuelva a repetir un número indeterminado de veces o ninguna.

Ejemplo de uso del bucle do while

Un ejemplo claro de bucle do while puede ser el siguiente, en el que necesitamos obtener un número par aleatorio menor que el que nosotros le digamos.


public void numeroPar(int numero) {
    System.out.println("Numero par menor que: " + numero);
    int n;
    do {
        n = (int) (Math.random() * numero);
        System.out.println(n);
    } while (n % 2 != 0);
    System.out.println("Y el numero par elegido es: " + n);
}

Esta claro que al menos se tiene que ejecutar una vez para tener un número aleatorio y si el número aleatorio no es par pues tendrá que repetirse hasta que si que lo sea.

Bucle for en java

El bucle for sirve para ejecutar un código un número conocido de veces, por ejemplo recorrer un array o cualquier otro tipo de colección o simplemente ejecutar el código un número concreto de veces.

En java hay dos posibles tipos de bucle for:

El más habitual es en el que se establece el numero desde el que va a empezar el bucle, hasta cuando se va a seguir ejecutando el bucle y finalmente el modo en el que se actualiza el contador del bucle, que aunque habitualmente lo que se hace es incrementar en una unidad el contador esto no tiene que ser obligatoriamente así.


for (inicializacion; condicion; actualizacion) {
    ...
}

El otro formato de bucle for es el ideal para recorrer colecciones de objetos sean del tipo que sean (arrays, ArrayList, HashMap, …) y en este caso hay que definir un iterador que nos devolverá un elemento de la colección en cada iteración y la colección que se quiere recorrer.


for (iteredor; coleccion) {
    ...
}

Ejemplos de uso del bucle for

Este es un ejemplo muy sencillo de bucle for en el que lo único que hacemos es imprimir por pantalla los números entre 1 el numero que nosotros queramos y como puedes ver en este caso al contrario que como ocurre en los bucles while y do while sabemos con certeza el numero de veces que se va a ejecutar el bucle.


public void contarHasta(int numero) {
    System.out.println("Cuenta hasta: " + numero);
    for (int i = 1; i <= numero; i++) {
        System.out.println(i);
    }
}

Visto lo sencillo del ejemplo anterior vamos a ver lo sencillo que es recorrer una colección de objetos si usamos el otro modelo de bucle for.


public void verDiasSemana() {
    String[] dias = {"Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado", "Domingo"};
        
    System.out.println("Los dias de la semana son:");
    for (String d: dias) {
        System.out.println(d);
    }
}

En este caso lo que estamos recorriendo es un array que también se podría recorrer de forma sencilla con la otra forma de bucle for aunque como podrás ver nos obliga a escribir algo más de código, por lo que para recorrer cualquier tipo de colección normalmente usaremos la opción anterior.


public void verDiasSemanaV2() {
    String[] dias = {"Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado", "Domingo"};
        
    System.out.println("Los dias de la semana son:");
    for (int i = 0; i < dias.length; i++) {
        System.out.println(dias[i]);
    }
}

Y como de costumbre si quieres descargarte un proyecto con el código completo de este articulo puedes hacerlo desde aquí.

2 Comments

  1. CARLINA 1 junio, 2014 Reply
  2. Diego Padron 23 enero, 2018 Reply

Leave a Reply