El control de flujo en Java permite a los programas tomar decisiones y ejecutar diferentes bloques de código según las condiciones. En este artículo exploraremos las estructuras más comunes: condicionales y bucles.
1. Estructura condicional if-else
La estructura if-else
permite ejecutar bloques de código según una condición booleana.
Sintaxis:
if (condición) { // Código si la condición es verdadera } else { // Código si la condición es falsa }
Ejemplo práctico:
public class CondicionalIf { public static void main(String[] args) { int edad = 18; if (edad >= 18) { System.out.println("Eres mayor de edad."); } else { System.out.println("Eres menor de edad."); } } }
Salida:
Eres mayor de edad.
2. Condiciones anidadas y else if
Puedes anidar condiciones para manejar múltiples casos.
Ejemplo:
public class CondicionesAnidadas { public static void main(String[] args) { int nota = 85; if (nota >= 90) { System.out.println("Sobresaliente"); } else if (nota >= 70) { System.out.println("Aprobado"); } else { System.out.println("Suspendido"); } } }
Salida:
Aprobado
3. Estructura switch-case
La estructura switch-case
es útil cuando deseas evaluar una misma variable contra múltiples valores.
Sintaxis:
switch (expresión) { case valor1: // Código si la expresión es igual a valor1 break; case valor2: // Código si la expresión es igual a valor2 break; default: // Código si no coincide con ningún caso }
Ejemplo práctico:
public class EstructuraSwitch { public static void main(String[] args) { String dia = "Martes"; switch (dia) { case "Lunes": System.out.println("Inicio de semana."); break; case "Martes": System.out.println("Segundo día de la semana."); break; default: System.out.println("Día no reconocido."); } } }
Salida:
Segundo día de la semana.
Nota: A partir de Java 12, se pueden usar expresiones switch
más compactas.
Ejemplo con Java 12:
int resultado = switch (dia) { case "Lunes" -> 1; case "Martes" -> 2; default -> 0; };
4. Bucles en Java
4.1 Bucle while
Ejecuta un bloque de código mientras una condición sea verdadera.
Ejemplo:
public class BucleWhile { public static void main(String[] args) { int contador = 1; while (contador <= 5) { System.out.println("Contador: " + contador); contador++; } } }
Salida:
Contador: 1 Contador: 2 Contador: 3 Contador: 4 Contador: 5
4.2 Bucle do-while
Ejecuta el bloque al menos una vez antes de evaluar la condición.
Ejemplo:
public class BucleDoWhile { public static void main(String[] args) { int contador = 1; do { System.out.println("Contador: " + contador); contador++; } while (contador <= 5); } }
4.3 Bucle for
Ideal para iterar un número conocido de veces.
Sintaxis:
for (inicialización; condición; actualización) { // Código a ejecutar }
Ejemplo:
public class BucleFor { public static void main(String[] args) { for (int i = 1; i <= 5; i++) { System.out.println("Iteración: " + i); } } }
4.4 Bucle for-each
Diseñado para iterar sobre colecciones o arrays.
Ejemplo:
public class BucleForEach { public static void main(String[] args) { int[] numeros = {1, 2, 3, 4, 5}; for (int numero : numeros) { System.out.println("Número: " + numero); } } }
5. Control del flujo en bucles
break
:
Termina el bucle actual inmediatamente.
Ejemplo:
for (int i = 1; i <= 10; i++) { if (i == 5) { break; } System.out.println(i); }
Salida:
1 2 3 4
continue
:
Salta a la siguiente iteración del bucle.
Ejemplo:
for (int i = 1; i <= 5; i++) { if (i == 3) { continue; } System.out.println(i); }
Salida:
1 2 4 5
6. Errores comunes al usar estructuras de control
Condiciones infinitas:
Ocurren si la condición del bucle nunca se vuelve falsa.
Ejemplo:
while (true) { System.out.println("Bucle infinito"); }
Olvidar el break
en switch
:
Sin break
, el flujo continuará ejecutando todos los casos siguientes.
Resumen
- Usa
if-else
para condiciones simples yswitch
para múltiples opciones. - Elige el bucle adecuado según la tarea:
for
,while
, odo-while
. - Controla el flujo en bucles con
break
ycontinue
para mayor flexibilidad.