Estructuras condicionales en Java (if, else, switch) : 10 ejercicios resueltos + aprendizaje teorico
Descubre cómo dominar las estructuras condicionales en Java con ejercicios prácticos resueltos, conceptos clave y ejemplos detallados que impulsarán tu aprendizaje y habilidades de programación.
Aprendizaje teórico
Las estructuras condicionales en Java son fundamentales para tomar decisiones en función de ciertas condiciones lógicas. Las más comunes son:
- if: Evalúa si una condición es verdadera para ejecutar un bloque de código.
- if-else: Permite ejecutar un bloque de código si la condición es verdadera y otro bloque distinto si es falsa.
- if-else-if: Evalúa múltiples condiciones en secuencia, ejecutando el bloque asociado a la primera que sea verdadera.
- switch: Selecciona la ejecución de un bloque de código según el valor de una variable, ideal cuando se tienen múltiples casos discretos.
Comprender estas estructuras te permitirá controlar el flujo de tu programa y responder adecuadamente a la información de entrada.
10 ejercicios resueltos en Java (if, else, switch)
Ejercicio 1: Comparar dos números e imprimir cuál es mayor
Explicación:
Pide al usuario dos números y determina cuál es mayor. Si ambos son iguales, se muestra un mensaje indicando que no hay diferencia.
import java.util.Scanner;
public class Ejercicio1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Ingresa el primer número: ");
int numero1 = sc.nextInt();
System.out.print("Ingresa el segundo número: ");
int numero2 = sc.nextInt();
if (numero1 > numero2) {
System.out.println("El número " + numero1 + " es mayor que " + numero2);
} else if (numero2 > numero1) {
System.out.println("El número " + numero2 + " es mayor que " + numero1);
} else {
System.out.println("Ambos números son iguales.");
}
sc.close();
}
}
Ejercicio 2: Verificar si un número es par o impar
Explicación:
Solicita un número y utiliza la operación módulo (%
) para determinar si el número es divisible entre 2.
import java.util.Scanner;
public class Ejercicio2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Ingresa un número entero: ");
int numero = sc.nextInt();
// Verificamos si el residuo es 0 al dividir entre 2
if (numero % 2 == 0) {
System.out.println("El número " + numero + " es par.");
} else {
System.out.println("El número " + numero + " es impar.");
}
sc.close();
}
}
Ejercicio 3: Determinar si un número es positivo, negativo o cero
Explicación:
Lee un número del usuario y comprueba su signo para mostrar el mensaje adecuado.
import java.util.Scanner;
public class Ejercicio3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Ingresa un número: ");
int numero = sc.nextInt();
if (numero > 0) {
System.out.println("El número es positivo.");
} else if (numero < 0) {
System.out.println("El número es negativo.");
} else {
System.out.println("El número es cero.");
}
sc.close();
}
}
Ejercicio 4: Calcular un descuento en base al monto de compra
Explicación:
Imagina que tienes una promoción donde si el monto es mayor a 100, se aplica un 10% de descuento; en caso contrario, no hay descuento.
import java.util.Scanner;
public class Ejercicio4 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Ingresa el monto de la compra: ");
double monto = sc.nextDouble();
double totalPagar;
if (monto > 100) {
totalPagar = monto * 0.90; // Aplica 10% de descuento
System.out.println("Se aplica un 10% de descuento.");
} else {
totalPagar = monto;
System.out.println("No se aplica descuento.");
}
System.out.println("El total a pagar es: " + totalPagar + " unidades monetarias.");
sc.close();
}
}
Ejercicio 5: Calcular el promedio de tres notas y mostrar el resultado (aprobado o reprobado)
Explicación:
Se leen tres notas y se calcula el promedio. Si el promedio es mayor o igual a 5 (en una escala de 0 a 10), se considera aprobado.
import java.util.Scanner;
public class Ejercicio5 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Ingresa la primera nota: ");
double nota1 = sc.nextDouble();
System.out.print("Ingresa la segunda nota: ");
double nota2 = sc.nextDouble();
System.out.print("Ingresa la tercera nota: ");
double nota3 = sc.nextDouble();
double promedio = (nota1 + nota2 + nota3) / 3;
System.out.println("El promedio es: " + promedio);
if (promedio >= 5) {
System.out.println("¡Felicidades! Has aprobado.");
} else {
System.out.println("Lo siento, has reprobado.");
}
sc.close();
}
}
Ejercicio 6: Convertir nota numérica a calificación con switch
Explicación:
Basado en un número entero entre 1 y 5, se asigna una calificación textual (Ejemplo: 1 = Muy Deficiente, 5 = Excelente).
import java.util.Scanner;
public class Ejercicio6 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Ingresa una nota del 1 al 5: ");
int nota = sc.nextInt();
switch (nota) {
case 1:
System.out.println("Muy Deficiente");
break;
case 2:
System.out.println("Deficiente");
break;
case 3:
System.out.println("Regular");
break;
case 4:
System.out.println("Bueno");
break;
case 5:
System.out.println("Excelente");
break;
default:
System.out.println("Nota inválida. Debe estar entre 1 y 5.");
break;
}
sc.close();
}
}
Ejercicio 7: Menú de opciones simples con switch
Explicación:
Despliega un menú para realizar una operación matemática específica según la opción elegida por el usuario.
import java.util.Scanner;
public class Ejercicio7 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Menú de operaciones:");
System.out.println("1. Sumar");
System.out.println("2. Restar");
System.out.println("3. Multiplicar");
System.out.println("4. Dividir");
System.out.print("Elige una opción: ");
int opcion = sc.nextInt();
System.out.print("Ingresa el primer número: ");
double a = sc.nextDouble();
System.out.print("Ingresa el segundo número: ");
double b = sc.nextDouble();
switch (opcion) {
case 1:
System.out.println("Resultado: " + (a + b));
break;
case 2:
System.out.println("Resultado: " + (a - b));
break;
case 3:
System.out.println("Resultado: " + (a * b));
break;
case 4:
if (b != 0) {
System.out.println("Resultado: " + (a / b));
} else {
System.out.println("Error: No se puede dividir entre cero.");
}
break;
default:
System.out.println("Opción no válida.");
break;
}
sc.close();
}
}
Ejercicio 8: Determinar si un año es bisiesto con if-else
Explicación:
Se considera un año bisiesto si es divisible entre 4, pero no entre 100, o si es divisible entre 400.
import java.util.Scanner;
public class Ejercicio8 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Ingresa un año: ");
int anio = sc.nextInt();
if ((anio % 4 == 0 && anio % 100 != 0) || (anio % 400 == 0)) {
System.out.println("El año " + anio + " es bisiesto.");
} else {
System.out.println("El año " + anio + " no es bisiesto.");
}
sc.close();
}
}
Ejercicio 9: Categorizar una edad con if-else-if
Explicación:
Dada una edad, mostrar si la persona es niño (0-12), adolescente (13-17), adulto (18-64) o adulto mayor (65+).
import java.util.Scanner;
public class Ejercicio9 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Ingresa la edad: ");
int edad = sc.nextInt();
if (edad < 0) {
System.out.println("Edad inválida.");
} else if (edad <= 12) {
System.out.println("Es un niño.");
} else if (edad <= 17) {
System.out.println("Es un adolescente.");
} else if (edad <= 64) {
System.out.println("Es un adulto.");
} else {
System.out.println("Es un adulto mayor.");
}
sc.close();
}
}
Ejercicio 10: Calcular un bono según años de servicio
Explicación:
Si un empleado tiene 5 años o más en la empresa, recibe un bono del 20% de su salario. En caso contrario, el bono es del 10%.
import java.util.Scanner;
public class Ejercicio10 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Ingresa el salario base: ");
double salario = sc.nextDouble();
System.out.print("Ingresa los años de servicio: ");
int anosServicio = sc.nextInt();
double bono;
if (anosServicio >= 5) {
bono = salario * 0.20;
} else {
bono = salario * 0.10;
}
System.out.println("El bono correspondiente es de: " + bono);
sc.close();
}
}
Preguntas frecuentes
¿En qué situaciones conviene utilizar if-else
en lugar de switch
?
El if-else
es útil cuando las condiciones no se limitan a valores específicos o son más complejas (por ejemplo, comparaciones mayores/menores, rangos, condiciones booleanas compuestas). El switch
es más legible y eficiente cuando se trabaja con múltiples casos basados en un valor discreto (como un número entero o un enum
).
¿Por qué debo cerrar el objeto Scanner
al final de cada programa?
Cerrar el objeto Scanner
libera los recursos asociados al flujo de entrada. Es una buena práctica en Java para evitar fugas de recursos, especialmente cuando se trabaja con archivos o flujos de datos más complejos.
¿Qué pasa si en el switch
no incluyo la cláusula break
al final de cada caso?
Si omites el break
, el programa continuará ejecutando las instrucciones del siguiente caso, un comportamiento llamado fall-through. Esto puede ser útil en algunos escenarios, pero la mayoría de las veces se usa break
para detener la ejecución en el caso correspondiente.
Conclusión
¡Felicidades! Has repasado los fundamentos de las estructuras condicionales en Java con ejemplos prácticos y ejercicios resueltos. Dominar estas herramientas te permitirá escribir programas más dinámicos y responder de forma efectiva a diferentes escenarios. Sigue practicando con variaciones de estos ejercicios para afianzar tus conocimientos y desarrollar aún más tu lógica de programación.
¿Te gustó este contenido? Visita nuestro blog y descubre más artículos sobre programación en Java, ejercicios prácticos y consejos para convertirte en un desarrollador destacado. ¡Sigue aprendiendo con nosotros!
Aprende mas sobre Java en las siguientes referencias: