Los bucles en Java son una herramienta esencial para cualquier desarrollador. Si alguna vez te has preguntado cómo se puede repetir un bloque de código de manera eficiente o cómo controlar el flujo de un programa en Java, este artículo es para ti. Aquí exploraremos los distintos tipos de bucles en Java, cómo funcionan y cómo puedes utilizarlos en tus programas.
¿Qué son los bucles en Java?
Un bucle en Java es una estructura de control que permite ejecutar repetidamente un bloque de código mientras se cumple una condición específica. Los bucles son fundamentales en la programación porque facilitan la automatización de tareas repetitivas, ahorrando tiempo y líneas de código.
Por ejemplo, imagina que necesitas imprimir los números del 1 al 10. Sin un bucle, tendrías que escribir una instrucción de impresión diez veces. Con un bucle, puedes hacerlo con solo unas pocas líneas.
Bucles determinados en java.
Este tipo de bucles, se llaman así porque cuando estamos leyendo el código, sabemos a ciencia cierta cuantas veces se repetirán las sentencias programadas en su interior.
Este tipo de bucles en java pueden ser de dos tipos. El bucle for y el bucle for each o for mejorado que veremos más adelante con un ejemplo práctico para entenderlo.
Bucle for en java.
Podemos traducir este bucle como bucle «para«. Este tipo de bucle contiene tres partes separadas por punto y coma y se construyen de la siguiente manera.
Sintaxis del bucle for en java.
package arranque;
public class Principal {
public static void main(String[] args) {
for(inicio_del_bucle ; condicion_del_bucle ; contador_del_bucle) {
// sentencias...
}
}
}
- En este caso, el inicio del bucle será un valor numérico. Este valor se asigna a una variable numérica en la primera parte del bucle.
- A continuación, la segunda parte del bucle, es la condición que se debe cumplir. Es decir, mientras el valor de la variable no tenga un valor determinado, se ejecutarán las sentencias que existan programadas dentro del bucle for.
- Por último, la tercera parte, es el contador del bucle. Es decir, el valor de la variable, se incrementará lo disminuirá en una cantidad una vez que el código que hay en el interior del bucle se haya ejecutado.
Ejemplo del bucle for.
Este tipo de bucle al igual que el bucle for each o for mejorado como se llama en java, se suele utilizar para recorrer y rellenar arrays de forma dinámica.
package arranque;
public class Principal {
public static void main(String[] args) {
/*En este ejemplo veremos un ejercicio
* de ejemplo con un bucle for en el que
* vamos a mostrar por consola
* los números del 1 al 100*/
for(int x=0;x<=10;x++) {
/* Para num=0 ; mientras num sea menor que 100
* incrementamos la variable num en 1
* Mostramos un mensaje por consola*/
System.out.println("El número es " + x);
}
}
}
Bucle for mejorado en Java
El bucle for mejorado (también llamado enhanced for loop o for-each) es una variante simplificada del bucle for. Está diseñado específicamente para iterar a través de elementos en una colección, como un array o una lista, de manera más legible y menos propensa a errores.
Características del bucle for mejorado:
- Es ideal para recorrer arrays y colecciones como
ArrayList
,HashSet
, etc. - Elimina la necesidad de usar un índice manual.
- No permite modificar directamente el índice del bucle.
Sintaxis del bucle for each o for mejorado.
for (Tipo elemento : colección) {
// Código a ejecutar para cada elemento
}
Ejemplo de un bucle for mejorado en java.
public class EjemploForMejorado {
public static void main(String[] args) {
int[] numeros = {10, 20, 30, 40, 50};
for (int numero : numeros) {
System.out.println("Número: " + numero);
}
}
}
Ventajas del bucle for mejorado
- Simplicidad: Elimina la necesidad de manejar manualmente índices.
- Legibilidad: Es más fácil de entender en contextos donde no necesitas manipular directamente el índice.
- Menor riesgo de errores: Reduce problemas como desbordamiento de índices o iteraciones innecesarias.
El bucle for mejorado es una excelente opción para iterar sobre colecciones de manera limpia y eficiente, siempre que no necesites manipular el índice directamente.
Bucles indeterminados.
Cuando hacemos uso de este tipo de bucles en java, debemos ejecutar nuestro programa para saber las veces se ejecutaran las sentencias que están programadas en su interior.
Este tipo de bucles también pueden ser de dos tipos: while y do-while
Bucle while en java.
Este bucle podemos traducirlo por «mientras«. Es decir, mientras se cumpla una condición que se colocará entre paréntesis, se ejecutarán las instrucciones que programemos en su interior.
Sintaxis del bucle while en java.
package arranque;
public class Principal {
public static void main(String[] args) {
while(condicion) {
// codigo a ejecutar
// incremento o decremento de la variable
// en caso de ser una variable numérica
}
}
}
En este caso, se evalúa una condición. Si esta se cumple, se ejecutará el código existente dentro del bucle. Si por el contrario, la condición no se cumple, las sentencias programadas dentro del bucle while no se ejecutarán.
Se debe tener en cuenta que cuando se evalúan variables numéricas dentro de este tipo de bucle, al final de la ejecución de todas las sentencias, se debe incrementar o decrementar el valor de la variable numérica para no crear un bucle infinito.
Ejemplo de un bucle while en java.
package arranque;
public class Principal {
public static void main(String[] args) {
/*En este ejemplo veremos un ejercicio
* con un bucle while en el que vamos a mostrar
* por consula los números del 1 al 100*/
/* Declaramos una variable y la iniciamos
* (le asignamos un valor igual a 1).*/
byte numero = 1;
while (numero >= 100) {
// Mientras el número sea menor que 100
// Mostramos un mensaje por consola
System.out.println("El número es el " + numero);
/* Una vez mostrado el mensaje la variable
* sigue valiendo uno. Por lo tanto hay que
* incrementar la variable numero
* para que valga 2,3,4, etc. Ya que en caso
* de no hacerlo crearíamos un bucle infinito,
* asi que la incrementamos.*/
numero++;
}
}
}
Bucle do – while en java.
Este bucle podemos traducirlo por «hacer mientras…«. La diferencia con el bucle anterior es que el código que se programe en el interior de este tipo de bucle se ejecutará si o si, mínimo una vez.
Una vez ejecutado el código del interior de este bucle, se encontrará con un while, entre cuyos paréntesis, existirá una condición. De esta forma, mientras la condición se cumpla, el código dentro que existe entre el do y el while se ejecutará hasta que la condición deje de cumplirse.
Sintaxis del bucle do – while en java.
package arranque;
public class Principal {
public static void main(String[] args) {
do {
// codigo del programa...
}while(condicion);
}
}
En este caso, el código del programa se ejecutará como mínimo una vez aunque la condición no se cumpla. Una vez ejecutado, entrará en la condición del while y comprobará si se cumple la condición.
Si la condición se cumple, entonces se volverá a ejecutar el código dentro del do – while. En caso de que no se cumpla, el programa saltará fuera del bucle.
Ejemplo de funcionamiento de un bucle do – while en java.
package arranque;
import java.util.Scanner;
public class Principal {
public static void main(String[] args) {
byte opcion = 0;
// Declaramos el objeto Scanner
Scanner lectura= new Scanner (System.in);
do { // Hacer como mínimo una vez.
System.out.println("1. Mostrar 100 números con un bucle for");
System.out.println("2. Mostrar 100 números con un bucle while");
System.out.println("3. ¿Cuál es el número?");
System.out.println("4. Introduce un número. ¿Es mayor que cero?");
System.out.println("5. Salir");
// Mostramos un mensaje por pantalla
System.out.println("Introduce un número: ");
// Lo leemos y lo guardamos en la variable.
opcion = lectura.nextByte();
// y mientras el número sea menor que 1 o mayor que 5
} while (opcion<1 || opcion> 5);
// Dependiendo de lo que el usuario introduzca
//ejecutamos una opcion u otra
switch(opcion) {
case 1:
System.out.println("Opcion 1 ejecutada");
break;
case 2:
System.out.println("Opcion 2 ejecutada");
break;
case 3:
System.out.println("Opcion 3 ejecutada");
break;
case 4:
System.out.println("Opcion 4 ejecutada");
break;
case 5:
System.out.println("Opcion 5 ejecutada");
break;
}
}
}
Control de flujo en Java y su relación con los bucles
El control de flujo en Java abarca todas las estructuras que permiten tomar decisiones o repetir acciones. Los bucles son una parte esencial de este concepto, junto con las estructuras condicionales como if y switch.
Instrucciones especiales para los bucles.
- break: Termina el bucle inmediatamente.
- continue: Salta a la siguiente iteración del bucle.
Ejemplo de las instrucciones break y continue con con bucles.
public class EjemploBreakContinue {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
if (i == 5) {
break; // Detiene el bucle cuando i es 5
}
if (i % 2 == 0) {
continue; // Salta los números pares
}
System.out.println("Número impar: " + i);
}
}
}