Páginas

Condicionales Anidadas en Java: If, Else If y Else - Guía Completa con Ejemplos Prácticos

¿Qué son las Condicionales en Java?

Las estructuras condicionales o estructuras de decisión permiten que un programa tome diferentes caminos según se cumplan o no ciertas condiciones. Son fundamentales para crear programas que respondan de manera inteligente a diferentes situaciones.

Java ofrece tres tipos principales de condicionales:

  • if (si)
  • else if (sino si)
  • else (sino)

1. La Estructura IF (Si)

La estructura if es la condicional más básica. Ejecuta un bloque de código solo si la condición es verdadera.

Sintaxis:

if (condición) {
    // Código que se ejecuta si la condición es verdadera
}

Ejemplo Básico:

public class EjemploIf {
    public static void main(String[] args) {
        int edad = 18;
        
        if (edad >= 18) {
            System.out.println("Eres mayor de edad");
        }
        
        System.out.println("Programa terminado");
    }
}

Salida:

Eres mayor de edad
Programa terminado

Ejemplo con Variable Boolean:

public class ValidacionAcceso {
    public static void main(String[] args) {
        boolean tieneAcceso = true;
        
        if (tieneAcceso) {
            System.out.println("Acceso concedido");
            System.out.println("Bienvenido al sistema");
        }
    }
}

2. La Estructura IF-ELSE (Si-Sino)

La estructura if-else permite ejecutar un bloque de código si la condición es verdadera, y otro bloque diferente si es falsa.

Sintaxis:

if (condición) {
    // Código si la condición es verdadera
} else {
    // Código si la condición es falsa
}

Ejemplo:

public class ParOImpar {
    public static void main(String[] args) {
        int numero = 7;
        
        if (numero % 2 == 0) {
            System.out.println(numero + " es par");
        } else {
            System.out.println(numero + " es impar");
        }
    }
}

Salida:

7 es impar

Ejemplo con Comparación:

public class ValidacionNota {
    public static void main(String[] args) {
        double nota = 3.5;
        
        if (nota >= 3.0) {
            System.out.println("¡Aprobaste! Nota: " + nota);
        } else {
            System.out.println("Reprobaste. Nota: " + nota);
        }
    }
}

3. La Estructura ELSE IF (Sino Si)

La estructura else if permite evaluar múltiples condiciones de manera secuencial. Se utiliza cuando hay más de dos posibles caminos a seguir.

Sintaxis:

if (condición1) {
    // Código si condición1 es verdadera
} else if (condición2) {
    // Código si condición2 es verdadera
} else if (condición3) {
    // Código si condición3 es verdadera
} else {
    // Código si ninguna condición es verdadera
}

Ejemplo: Calificación de Notas

public class CalificacionNotas {
    public static void main(String[] args) {
        double nota = 4.2;
        
        if (nota >= 4.5) {
            System.out.println("Excelente");
        } else if (nota >= 4.0) {
            System.out.println("Sobresaliente");
        } else if (nota >= 3.5) {
            System.out.println("Bueno");
        } else if (nota >= 3.0) {
            System.out.println("Aprobado");
        } else {
            System.out.println("Reprobado");
        }
    }
}

Salida:

Sobresaliente

Ejemplo: Categoría por Edad

public class CategoriaEdad {
    public static void main(String[] args) {
        int edad = 15;
        
        if (edad < 0) {
            System.out.println("Edad inválida");
        } else if (edad < 12) {
            System.out.println("Categoría: Niño");
        } else if (edad < 18) {
            System.out.println("Categoría: Adolescente");
        } else if (edad < 65) {
            System.out.println("Categoría: Adulto");
        } else {
            System.out.println("Categoría: Adulto Mayor");
        }
    }
}

4. Condicionales Anidadas

Las condicionales anidadas son estructuras if dentro de otras estructuras if. Permiten evaluar condiciones más complejas.

Ejemplo: Validación de Acceso con Múltiples Criterios

public class AccesoSistema {
    public static void main(String[] args) {
        String usuario = "admin";
        String password = "1234";
        boolean tieneCuenta = true;
        
        if (tieneCuenta) {
            System.out.println("Cuenta encontrada");
            
            if (usuario.equals("admin")) {
                System.out.println("Usuario correcto");
                
                if (password.equals("1234")) {
                    System.out.println("Contraseña correcta");
                    System.out.println("¡Acceso concedido!");
                } else {
                    System.out.println("Contraseña incorrecta");
                }
            } else {
                System.out.println("Usuario no encontrado");
            }
        } else {
            System.out.println("No tienes una cuenta registrada");
        }
    }
}

Ejemplo: Sistema de Descuentos

public class SistemaDescuentos {
    public static void main(String[] args) {
        double precio = 250000;
        int cantidadProductos = 8;
        double descuento = 0;
        
        if (precio >= 200000) {
            System.out.println("Aplica descuento por precio");
            descuento = 0.10;
            
            if (cantidadProductos > 5) {
                System.out.println("Descuento adicional por cantidad");
                descuento = descuento + 0.05;
            }
        } else {
            System.out.println("No aplica descuento");
        }
        
        double precioFinal = precio - (precio * descuento);
        System.out.println("Descuento total: " + (int)(descuento * 100) + "%");
        System.out.println("Precio final: $" + precioFinal);
    }
}

5. Operadores de Comparación

Para crear condiciones, utilizamos operadores de comparación:

Operador Significado Ejemplo
== Igual a a == b
!= Diferente de a != b
> Mayor que a > b
< Menor que a < b
>= Mayor o igual que a >= b
<= Menor o igual que a <= b

6. Operadores Lógicos

Permiten combinar múltiples condiciones:

Operador Significado Ejemplo
&& AND (Y) - Ambas condiciones deben ser verdaderas (a > 5) && (b < 10)
|| OR (O) - Al menos una condición debe ser verdadera (a == 5) || (b == 10)
! NOT (NO) - Invierte el valor de la condición !(a > 5)

Ejemplo con Operadores Lógicos:

public class OperadoresLogicos {
    public static void main(String[] args) {
        int edad = 20;
        boolean tieneLicencia = true;
        
        // Operador AND (&&)
        if (edad >= 18 && tieneLicencia) {
            System.out.println("Puede conducir");
        } else {
            System.out.println("No puede conducir");
        }
        
        // Operador OR (||)
        String dia = "sábado";
        if (dia.equals("sábado") || dia.equals("domingo")) {
            System.out.println("Es fin de semana");
        }
        
        // Operador NOT (!)
        boolean estaLloviendo = false;
        if (!estaLloviendo) {
            System.out.println("Puede salir sin paraguas");
        }
    }
}

7. Ejemplo Completo: Sistema de Compras

import java.util.Scanner;

public class SistemaCompras {
    public static void main(String[] args) {
        Scanner leer = new Scanner(System.in);
        double precio, descuento, precioFinal;
        int codigo, cantidad;
        descuento = 0;
        
        System.out.print("Digite el precio: $");
        precio = leer.nextDouble();
        
        // Descuento por precio
        if (precio < 200000) {
            System.out.println("No aplica descuento por precio");
        } else if (precio >= 200000 && precio <= 500000) {
            descuento = descuento + 0.10;
            System.out.println("Aplica descuento del 10% por precio");
        } else {
            descuento = descuento + 0.15;
            System.out.println("Aplica descuento del 15% por precio");
        }
        
        // Descuento por código
        System.out.print("Digite el código del producto: ");
        codigo = leer.nextInt();
        
        if (codigo % 10 == 2) {
            descuento = descuento + 0.05;
            System.out.println("Aplica descuento adicional del 5%");
        }
        
        // Descuento por cantidad
        System.out.print("Digite la cantidad de productos: ");
        cantidad = leer.nextInt();
        
        if (cantidad > 10) {
            descuento = descuento + 0.02;
            System.out.println("Aplica descuento adicional del 2%");
        }
        
        // Calcular precio final
        precioFinal = precio - (precio * descuento);
        
        System.out.println("\n--- RESUMEN ---");
        System.out.println("Precio original: $" + precio);
        System.out.println("Descuento total: " + (int)(descuento * 100) + "%");
        System.out.println("Total a pagar: $" + precioFinal);
        
        leer.close();
    }
}

8. Buenas Prácticas

✅ Usar llaves siempre

// Correcto
if (condicion) {
    System.out.println("Mensaje");
}

// Evitar (aunque funcione)
if (condicion)
    System.out.println("Mensaje");

✅ Ordenar condiciones de más específica a más general

// Correcto
if (nota >= 4.5) {
    // ...
} else if (nota >= 4.0) {
    // ...
} else if (nota >= 3.0) {
    // ...
}

✅ Evitar condicionales innecesarias

// Incorrecto
if (edad >= 18) {
    return true;
} else {
    return false;
}

// Correcto
return edad >= 18;

✅ Usar variables boolean para condiciones complejas

// Más legible
boolean puedeVotar = edad >= 18 && tieneCedula && estaRegistrado;

if (puedeVotar) {
    System.out.println("Puede votar");
}

9. Errores Comunes

❌ Error 1: Usar = en lugar de ==

// Incorrecto (asignación)
if (edad = 18) {
    // Error de compilación
}

// Correcto (comparación)
if (edad == 18) {
    // ...
}

❌ Error 2: Comparar Strings con ==

// Incorrecto
String nombre = "Juan";
if (nombre == "Juan") {
    // Puede no funcionar correctamente
}

// Correcto
if (nombre.equals("Juan")) {
    // ...
}

❌ Error 3: Condiciones mutuamente excluyentes mal ordenadas

// Incorrecto
if (edad >= 0) {
    System.out.println("Válido");
} else if (edad >= 18) {
    System.out.println("Mayor de edad"); // Nunca se ejecuta
}

// Correcto
if (edad >= 18) {
    System.out.println("Mayor de edad");
} else if (edad >= 0) {
    System.out.println("Menor de edad");
}

Conclusión

Las estructuras condicionales son fundamentales en la programación. Con if, else if y else podemos crear programas que tomen decisiones inteligentes basadas en diferentes condiciones.

Recuerda:

  • Usa if para una sola condición
  • Usa if-else para dos alternativas
  • Usa else if para múltiples condiciones mutuamente excluyentes
  • Anida condicionales cuando necesites evaluar criterios dependientes
  • Ordena las condiciones de más específica a más general
  • Usa operadores lógicos (&&, ||, !) para combinar condiciones

¡Practica con ejemplos y verás cómo mejora tu lógica de programación!