Una guía visual de los bucles `while`, `do-while` y `for`.
El `while` es como un portero que comprueba tu entrada (la condición) antes de dejarte pasar a la fiesta (el código). Si desde el principio no cumples la condición, no entras ni una sola vez.
Se ejecuta 0 o más veces.
int numero = 5;
int i = 0;
// El "portero" comprueba si i <= 10
while (i <= 10) {
System.out.println(
numero + " x " + i + " = " + (numero * i)
);
i++; // Se actualiza la condición
}
Aquí siempre entras a la fiesta (ejecutas el código) al menos una vez. Es al salir cuando el portero comprueba si puedes volver a entrar para otra ronda (la condición).
Se ejecuta 1 o más veces.
Scanner teclado = new Scanner(System.in);
int numero;
// Entras al bucle sí o sí
do {
System.out.print("Introduce un número positivo: ");
numero = teclado.nextInt();
} while (numero <= 0); // Al final, comprueban
System.out.println("¡Correcto!: " + numero);
El `for` es como un tren que sabe exactamente dónde empieza su ruta, dónde termina y cómo avanza de una parada a la siguiente. Todo el control del viaje está en una sola línea.
for (inicio; condición; incremento)
Ideal para un nº fijo de repeticiones.
int numero = 5;
// Todo el control en una línea
for (int i = 0; i <= 10; i++) {
System.out.println(
numero + " x " + i + " = " + (numero * i)
);
}
"El portero de discoteca". Cuenta eventos, normalmente de 1 en 1.
// Contar números pares
int contadorPares = 0;
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) {
contadorPares++;
}
}
// contadorPares será 5
"El carrito de la compra". Suma valores variables para obtener un total.
// Sumar precios de la compra
double[] precios = {1.5, 3.0, 2.25};
double total = 0.0;
for (int i = 0; i < precios.length; i++) {
total = total + precios[i];
}
// total será 6.75
"El interruptor de la luz". Recuerda si un evento ha ocurrido (`true`/`false`).
// Terminar un bucle a petición
boolean salir = false;
int contador = 0;
while (!salir) {
contador++;
System.out.println("Vuelta nº " + contador);
if (contador >= 3) {
salir = true; // Se pulsa el interruptor
}
}
// El bucle termina
Cuando NO sabes cuántas veces se repetirá, pero la condición debe comprobarse al principio.
Cuando necesitas que el código se ejecute al menos una vez, sin importar la condición inicial.
Cuando SÍ sabes el número exacto de repeticiones o vas a recorrer una estructura como un array.