¿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
ifpara una sola condición - Usa
if-elsepara dos alternativas - Usa
else ifpara 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!