certmundo.
es‑mx

6 min de lectura

¿Cómo repetir acciones con ciclos for y while en Java?

Los ciclos for y while permiten ejecutar un bloque de código múltiples veces sin escribirlo repetidamente.

En programación, repetir una acción de forma automática se llama iteración. Los ciclos son la herramienta principal para lograrlo.


Estructura del ciclo for

El ciclo for se usa cuando sabes de antemano cuántas veces quieres repetir algo.

Su estructura es:

for (inicialización; condición; actualización) {
    // código que se repite
}

Cada parte tiene una función específica:

Parte Descripción Ejemplo
Inicialización Declara el contador. Se ejecuta una sola vez. int i = 0
Condición Se revisa antes de cada repetición. Si es false, el ciclo termina. i < 10
Actualización Modifica el contador después de cada repetición. i++

Ejemplo 1: Imprimir números de turno en FEMSA

Supón que necesitas generar los números de turno del 1 al 5 para una línea de producción en FEMSA.

for (int turno = 1; turno <= 5; turno++) {
    System.out.println("Turno número: " + turno);
}

Salida:

Turno número: 1
Turno número: 2
Turno número: 3
Turno número: 4
Turno número: 5

El ciclo arranca con turno = 1. Cada vez que termina, suma 1 (turno++). Cuando turno llega a 6, la condición turno <= 5 es false y el ciclo se detiene.


Ejemplo 2: Calcular el total de ventas en Liverpool

Tienes 4 vendedoras en una sucursal de Liverpool. Quieres sumar todas sus ventas del día.

int[] ventas = {12500, 18000, 9750, 21300};
int total = 0;

for (int i = 0; i < ventas.length; i++) {
    total = total + ventas[i];
}

System.out.println("Total de ventas del día: $" + total);

Salida:

Total de ventas del día: $61,550

ventas.length devuelve el tamaño del arreglo (4). El índice i recorre posiciones 0, 1, 2 y 3. Cada vuelta suma el valor de esa posición al acumulador total.


El ciclo for-each para recorrer colecciones

Java ofrece una versión simplificada del for llamada for-each. Es ideal cuando solo necesitas leer cada elemento sin modificar el índice.

for (tipo variable : arreglo) {
    // usa la variable
}

Ejemplo: Listar empleados de Bimbo

String[] empleados = {"Ana", "Carlos", "Fernanda", "Miguel"};

for (String nombre : empleados) {
    System.out.println("Empleado: " + nombre);
}

Salida:

Empleado: Ana
Empleado: Carlos
Empleado: Fernanda
Empleado: Miguel

No necesitas manejar el índice i. Java avanza automáticamente por cada elemento.


Estructura del ciclo while

El ciclo while se usa cuando no sabes cuántas veces se repetirá el código. Se ejecuta mientras una condición sea true.

while (condición) {
    // código que se repite
}

A diferencia del for, tú controlas manualmente el contador o la variable que cambia la condición.


Ejemplo 3: Procesar pedidos en Mercado Libre

Un sistema de Mercado Libre procesa pedidos pendientes hasta que no quede ninguno.

int pedidosPendientes = 8;

while (pedidosPendientes > 0) {
    System.out.println("Procesando pedido. Pendientes: " + pedidosPendientes);
    pedidosPendientes--;
}

System.out.println("Todos los pedidos fueron procesados.");

Salida:

Procesando pedido. Pendientes: 8
Procesando pedido. Pendientes: 7
...
Procesando pedido. Pendientes: 1
Todos los pedidos fueron procesados.

Cada iteración reduce pedidosPendientes en 1 con pedidosPendientes--. Cuando llega a 0, la condición es false y el ciclo termina.


Ejemplo 4: Acumular el salario mensual hasta superar una meta

Un empleado de FEMSA gana $18,500 al mes. Quieres saber cuántos meses necesita para ahorrar $100,000.

int salario = 18500;
int ahorro = 0;
int meses = 0;
int meta = 100000;

while (ahorro < meta) {
    ahorro = ahorro + salario;
    meses++;
}

System.out.println("Meses para alcanzar la meta: " + meses);
System.out.println("Ahorro acumulado: $" + ahorro);

Salida:

Meses para alcanzar la meta: 6
Ahorro acumulado: $111,000

El ciclo suma el salario cada mes hasta que el ahorro supera $100,000. El resultado muestra 6 meses y un acumulado de $111,000.


for vs while: ¿cuál usar?

Situación Ciclo recomendado
Sabes exactamente cuántas repeticiones necesitas for
Recorres un arreglo o lista de tamaño fijo for o for-each
La condición depende de un evento externo o variable while
No sabes cuántas veces se repetirá while
Quieres código más corto para leer colecciones for-each

Ciclos anidados

Puedes poner un ciclo dentro de otro. Esto se llama ciclo anidado.

Ejemplo: Reporte de ventas por sucursal y por semana

String[] sucursales = {"CDMX", "Monterrey", "Guadalajara"};

for (int s = 0; s < sucursales.length; s++) {
    for (int semana = 1; semana <= 2; semana++) {
        System.out.println("Sucursal: " + sucursales[s] + " | Semana: " + semana);
    }
}

Salida:

Sucursal: CDMX | Semana: 1
Sucursal: CDMX | Semana: 2
Sucursal: Monterrey | Semana: 1
Sucursal: Monterrey | Semana: 2
Sucursal: Guadalajara | Semana: 1
Sucursal: Guadalajara | Semana: 2

El ciclo externo avanza por cada sucursal. El ciclo interno recorre las semanas por cada sucursal.


Errores comunes

1. Olvidar actualizar el contador en un while

Si no modificas la variable dentro del while, la condición nunca cambia y el ciclo corre para siempre. Esto se llama ciclo infinito.

// ¡INCORRECTO! Ciclo infinito
int x = 0;
while (x < 5) {
    System.out.println(x);
    // Falta x++ aquí
}

Siempre verifica que el ciclo tenga una forma de terminar.

2. Usar el índice incorrecto en arreglos

En Java, los arreglos empiezan en el índice 0, no en 1. Si usas i <= ventas.length, Java lanzará un error ArrayIndexOutOfBoundsException.

// ¡INCORRECTO!
for (int i = 0; i <= ventas.length; i++) { ... }

// CORRECTO
for (int i = 0; i < ventas.length; i++) { ... }

3. Modificar el arreglo dentro de un for-each

El for-each solo sirve para leer elementos. Si intentas modificar el arreglo con él, el cambio no se guarda.

// Esto NO modifica el arreglo original
for (int v : ventas) {
    v = v + 100; // Solo modifica la copia local
}

Para modificar elementos, usa el for clásico con índice.

4. Confundir = con == en la condición

Usar = dentro de la condición del ciclo es un error de asignación, no de comparación. Usa siempre ==, <, > u otros operadores relacionales.

// ¡INCORRECTO!
while (x = 5) { ... }

// CORRECTO
while (x < 5) { ... }

Resumen de sintaxis

// Ciclo for clásico
for (int i = 0; i < n; i++) { /* código */ }

// Ciclo for-each
for (Tipo elemento : colección) { /* código */ }

// Ciclo while
while (condición) { /* código */ }

Con estas tres formas puedes resolver la mayoría de los problemas de repetición en Java.

Puntos clave

  • Usa el ciclo `for` cuando sabes exactamente cuántas veces se repetirá el código, como recorrer un arreglo de empleados de Bimbo o generar turnos en FEMSA.
  • Usa el ciclo `while` cuando la repetición depende de una condición variable, como procesar pedidos de Mercado Libre hasta que no quede ninguno.
  • El ciclo `for-each` simplifica la lectura de arreglos y colecciones, pero no permite modificar los elementos originales.
  • Siempre asegúrate de que el ciclo `while` tenga una instrucción que modifique la condición; de lo contrario crearás un ciclo infinito.
  • En arreglos de Java, el índice empieza en 0; usa `i < arreglo.length` (con `<`, no `<=`) para evitar el error `ArrayIndexOutOfBoundsException`.

Comparte esta lección: