Control de Flujo y Estructuras Condicionales en Java

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 y switch para múltiples opciones.
  • Elige el bucle adecuado según la tarea: for, while, o do-while.
  • Controla el flujo en bucles con break y continue para mayor flexibilidad.