50 ejercicios de Java resueltos paso a paso

📅 Actualizado en febrero 2026 ✍️ Ángel López ⏱️ 45 min de lectura ✓ Nivel todos los niveles

Aprender Java exige práctica constante. La teoría es imprescindible, pero es al escribir código, cometer errores y depurarlos cuando realmente se consolida el aprendizaje. Esta guía reúne 50 ejercicios de Java resueltos y explicados paso a paso, organizados desde los fundamentos más básicos hasta conceptos avanzados de programación orientada a objetos.

La colección está pensada tanto para estudiantes universitarios que cursan asignaturas de programación como para autodidactas que desean afianzar sus conocimientos. Los ejercicios siguen una progresión cuidadosamente diseñada: si eres capaz de resolver los últimos de cada sección sin consultar la solución, habrás alcanzado un nivel sólido en esa materia.

💡
Consejo pedagógico: Intenta resolver cada ejercicio por tu cuenta antes de consultar la solución. El aprendizaje real se produce cuando luchas con el problema, no cuando lees la respuesta. Dedica al menos 10-15 minutos a cada ejercicio antes de mirar la solución.

📋 Cómo usar esta guía de ejercicios

Los 50 ejercicios están agrupados en 10 categorías temáticas de dificultad creciente. Dentro de cada categoría, los ejercicios también van de menor a mayor complejidad. Al final, un proyecto integrador combina todos los conceptos en una aplicación real.

CategoríaEjerciciosNivelRequisitos previos
Variables y tipos de datos1 – 5🟢 PrincipianteNinguno
Condicionales6 – 10🟢 PrincipianteVariables
Bucles11 – 15🟢 PrincipianteCondicionales
Arrays y matrices16 – 20🟡 IntermedioBucles
Cadenas de texto21 – 25🟡 IntermedioArrays
Métodos y funciones26 – 30🟡 IntermedioStrings
POO: clases y objetos31 – 35🟡 IntermedioMétodos
POO avanzada36 – 40🔴 AvanzadoClases y objetos
Excepciones41 – 45🔴 AvanzadoPOO
Colecciones46 – 50🔴 AvanzadoExcepciones
Buena práctica: Crea un proyecto en tu IDE para cada sección. Así tendrás tu propio repositorio personal de ejercicios resueltos al que recurrir como referencia rápida.

🔢 Ejercicios de variables y tipos de datos

Las variables son el pilar fundamental de cualquier programa. En Java, cada variable tiene un tipo de dato que determina qué valores puede almacenar y qué operaciones se pueden realizar con ella. Estos ejercicios cubren declaración, inicialización, conversión de tipos y uso de las clases matemáticas de Java.

📝 Ejercicio 1: Intercambio de variables sin variable auxiliar

Declara dos variables enteras con valores 10 y 25. Intercambia sus valores sin usar una tercera variable y muestra el resultado por consola.

📝 Ejercicio 2: Conversión de temperatura

Convierte una temperatura de 36.6 grados Celsius a Fahrenheit (F = C × 9/5 + 32) y a Kelvin (K = C + 273.15). Muestra los resultados formateados.

📝 Ejercicio 3: Desglose de segundos en horas, minutos y segundos

Dado un total de 86523 segundos, desglósalo en horas, minutos y segundos restantes. Formato de salida: HH:MM:SS.

📝 Ejercicio 4: Área y perímetro de un círculo

Calcula el área y el perímetro de un círculo de radio 7.5 usando Math.PI. Muestra los resultados con 4 decimales.

📝 Ejercicio 5: Casting y promoción de tipos

Convierte un int con valor 257 a byte, y un double con valor 9.99 a int. Muestra los resultados y explica por qué cambian los valores.

🔀 Ejercicios de condicionales (if, switch)

Las estructuras condicionales permiten tomar decisiones en el programa. Java ofrece if-else para condiciones generales y switch para seleccionar entre múltiples opciones discretas.

📝 Ejercicio 6: Clasificador de notas

Escribe un programa que reciba una nota (0-10) y muestre la calificación: Suspenso (0-4), Aprobado (5-6), Notable (7-8), Sobresaliente (9), Matrícula de Honor (10).

📝 Ejercicio 7: Calculadora con switch

Implementa una calculadora que reciba dos números y un operador (+, -, *, /) y ejecute la operación. Controla la división por cero.

📝 Ejercicio 8: Año bisiesto

Determina si un año es bisiesto. Regla: divisible por 4, excepto si es divisible por 100, salvo que también sea divisible por 400.

📝 Ejercicio 9: Clasificador de triángulos

Dados tres lados, determina si forman un triángulo válido y clasifícalo en equilátero, isósceles o escaleno.

📝 Ejercicio 10: Número mayor de tres con operador ternario

Dados tres números enteros, encuentra el mayor usando exclusivamente operadores ternarios anidados (sin if-else ni Math.max).

🔄 Ejercicios de bucles (for, while, do-while)

Los bucles permiten repetir bloques de código. Java ofrece for (iteraciones conocidas), while (condición evaluada antes) y do-while (al menos una ejecución garantizada).

📝 Ejercicio 11: Serie de Fibonacci

Genera los primeros 20 números de Fibonacci (0, 1, 1, 2, 3, 5, 8, 13...).

📝 Ejercicio 12: Números primos hasta 100

Muestra todos los números primos entre 2 y 100. Optimiza probando divisores solo hasta la raíz cuadrada.

📝 Ejercicio 13: Pirámide de asteriscos

Dibuja una pirámide centrada de 7 filas con asteriscos.

📝 Ejercicio 14: Máximo Común Divisor (algoritmo de Euclides)

Implementa el algoritmo de Euclides con while para calcular el MCD de 48 y 18.

📝 Ejercicio 15: Adivinar un número (do-while)

Simula un juego donde el usuario debe adivinar un número aleatorio entre 1 y 100. Da pistas ("más alto" / "más bajo") hasta acertar. Usa do-while.

📊 Ejercicios de arrays y matrices

Los arrays almacenan múltiples valores del mismo tipo en posiciones consecutivas de memoria. En Java tienen tamaño fijo. Son la base para entender colecciones más avanzadas.

📝 Ejercicio 16: Estadísticas de un array

Calcula mínimo, máximo, suma, media y cantidad de pares de un array de enteros.

📝 Ejercicio 17: Ordenamiento burbuja (Bubble Sort)

Ordena un array de enteros de menor a mayor con el algoritmo Bubble Sort. Incluye la optimización de parada anticipada.

📝 Ejercicio 18: Búsqueda binaria

Implementa búsqueda binaria en un array ordenado. Busca el valor 34 en {2, 5, 8, 12, 16, 23, 34, 45, 56, 72, 91}.

📝 Ejercicio 19: Matriz traspuesta

Calcula la traspuesta de una matriz 3×3 (intercambiar filas por columnas).

📝 Ejercicio 20: Eliminar duplicados de un array

Dado {4, 2, 7, 2, 4, 8, 7, 1}, genera un nuevo array sin duplicados manteniendo el orden original.

🔤 Ejercicios de cadenas de texto (String)

La clase String en Java es inmutable: cada operación crea un nuevo objeto. Dominar sus métodos es fundamental para el procesamiento de texto, validaciones y transformaciones de datos.

📝 Ejercicio 21: Detector de palíndromos

Determina si una cadena es palíndromo ignorando mayúsculas, espacios y tildes. Prueba con "Anita lava la tina".

📝 Ejercicio 22: Contar palabras y vocales

Cuenta vocales, consonantes, dígitos y palabras en "Java 21 es genial".

📝 Ejercicio 23: Cifrado César

Cifra "HOLA MUNDO" desplazando cada letra 3 posiciones. Descifra con desplazamiento 23 (26-3).

📝 Ejercicio 24: Invertir cada palabra en una frase

Dada "Java es poderoso", invierte cada palabra individualmente: "avaJ se osoredop".

📝 Ejercicio 25: Comprimir cadena (Run-Length Encoding)

Comprime "aaabbbccddddee" a "a3b3c2d4e2". Si la compresión no reduce el tamaño, devuelve la original.

⚙️ Ejercicios de métodos y funciones

Los métodos permiten dividir un programa en bloques reutilizables. Un buen diseño sigue el principio de responsabilidad única: cada método hace una sola cosa y la hace bien.

📝 Ejercicio 26: Método recursivo — Factorial

Implementa el cálculo del factorial de forma recursiva e iterativa. Compara ambos enfoques.

📝 Ejercicio 27: Sobrecarga de métodos — Calculadora de áreas

Crea un método calcularArea sobrecargado para círculo (radio), rectángulo (base, altura) y triángulo (base, altura, bandera).

📝 Ejercicio 28: Varargs — Suma flexible

Crea un método que sume cualquier cantidad de números usando int... numeros.

📝 Ejercicio 29: Método genérico — Encontrar máximo

Crea un método genérico que encuentre el máximo de tres valores de cualquier tipo Comparable.

📝 Ejercicio 30: Paso de arrays a métodos

Crea un método que reciba un array desordenado, lo ordene internamente y devuelva la posición de un valor objetivo.

🏗️ Ejercicios de POO: clases y objetos

La Programación Orientada a Objetos organiza el código en clases que modelan entidades del mundo real. Cada objeto tiene estado (atributos) y comportamiento (métodos). Los cuatro pilares son: encapsulamiento, herencia, polimorfismo y abstracción.

📝 Ejercicio 31: Clase CuentaBancaria

Modela una cuenta bancaria con titular, saldo, métodos depositar y retirar (sin saldo negativo).

📝 Ejercicio 32: Clase Estudiante con Comparable

Crea una clase Estudiante con nombre, nota media y compareTo para ordenar por nota descendente.

📝 Ejercicio 33: Enum con comportamiento — DiaSemana

Crea un enum DiaSemana con método que indique si es laborable y cuántas horas de trabajo tiene.

📝 Ejercicio 34: Clase inmutable — Punto2D

Crea una clase inmutable Punto2D con distanciaA(), trasladar() (devuelve nuevo punto) y equals/hashCode.

📝 Ejercicio 35: Composición — Clase Dirección dentro de Persona

Modela una relación de composición: Persona tiene una Direccion. Demuestra que si se destruye Persona, Dirección deja de tener sentido.

🧬 Ejercicios de POO avanzada: herencia y polimorfismo

La herencia permite crear clases derivadas que heredan atributos y métodos de una clase base. El polimorfismo permite que una referencia de tipo padre apunte a objetos de tipos hijos, ejecutando el método adecuado en tiempo de ejecución.

📝 Ejercicio 36: Jerarquía de Figuras geométricas

Crea una clase abstracta Figura con método abstracto calcularArea(). Implementa Circulo, Rectangulo y Triangulo. Usa polimorfismo para calcular el área total de un array de figuras.

📝 Ejercicio 37: Interfaz Imprimible

Crea una interfaz Imprimible con método imprimir(). Impleméntala en Factura y Informe. Demuestra polimorfismo con la interfaz.

📝 Ejercicio 38: Patrón Template Method — Procesador de pedidos

Implementa el patrón Template Method: una clase abstracta ProcesadorPedido define el flujo (validar → calcular → enviar), y las subclases personalizan cada paso.

📝 Ejercicio 39: Clase sellada (sealed) — Medios de pago

Usa sealed (Java 17+) para restringir qué clases pueden extender MedioPago.

📝 Ejercicio 40: Clase interna y expresión lambda

Ordena una lista de empleados por salario usando: a) clase anónima, b) lambda, c) referencia de método. Compara las tres sintaxis.

🛡️ Ejercicios de excepciones

Las excepciones permiten manejar errores de forma elegante sin corromper el flujo del programa. Java distingue entre excepciones checked (obligatorio manejar) y unchecked (opcionales, heredan de RuntimeException).

📝 Ejercicio 41: Try-catch-finally básico

Escribe un programa que intente dividir dos números leídos como String, manejando NumberFormatException y ArithmeticException.

📝 Ejercicio 42: Excepción personalizada

Crea SaldoInsuficienteException y úsala en una cuenta bancaria que lance la excepción al intentar retirar más del saldo disponible.

📝 Ejercicio 43: Try-with-resources

Lee un archivo de texto usando try-with-resources para garantizar el cierre automático del recurso.

📝 Ejercicio 44: Multi-catch y cadena de excepciones

Demuestra multi-catch (catch (A | B e)) y cómo encadenar excepciones con el constructor de causa.

📝 Ejercicio 45: Validador con Optional

Usa Optional para manejar valores potencialmente nulos de forma segura, evitando NullPointerException.

📦 Ejercicios de colecciones (ArrayList, HashMap)

Las colecciones son estructuras de datos dinámicas que superan las limitaciones de los arrays. El framework de colecciones de Java incluye List, Set, Map y Queue, cada una con múltiples implementaciones optimizadas para diferentes casos de uso.

📝 Ejercicio 46: Gestión de inventario con HashMap

Crea un sistema de inventario usando HashMap<String, Integer> con operaciones de añadir stock, vender y mostrar productos con bajo stock.

📝 Ejercicio 47: Agrupar con Collectors.groupingBy

Dada una lista de palabras, agrúpalas por su longitud usando Streams.

📝 Ejercicio 48: Cola de prioridad — Sistema de urgencias

Simula un sistema de urgencias hospitalarias con PriorityQueue donde los pacientes se atienden por gravedad.

📝 Ejercicio 49: Stream pipeline completo — Análisis de ventas

Procesa una lista de ventas: filtra por importe mínimo, agrupa por categoría, calcula el total por categoría y ordena descendentemente.

📝 Ejercicio 50: Caché LRU con LinkedHashMap

Implementa una caché LRU (Least Recently Used) de tamaño fijo usando LinkedHashMap.

🎓 Proyecto integrador: sistema de gestión de biblioteca

Este proyecto final combina todos los conceptos practicados en los 50 ejercicios anteriores: clases, herencia, interfaces, colecciones, excepciones, Streams y Optional. Modela un sistema de gestión de biblioteca con libros, socios y préstamos.

💡
Estructura del proyecto: El sistema se compone de 5 clases: Libro (entidad con ISBN, título, autor y estado), Socio (con límite de préstamos), Prestamo (asocia libro-socio con fechas), LibroNoDisponibleException (excepción personalizada) y Biblioteca (gestiona todo el sistema con colecciones).

🏆 Proyecto completo: Biblioteca

Implementa un sistema que permita: registrar libros y socios, realizar préstamos (máximo 3 por socio), devolver libros, buscar libros por autor y generar estadísticas.

⚠️
Siguiente paso: Para un sistema real, añadirías persistencia (base de datos), interfaz gráfica o web, validaciones más estrictas y tests unitarios con JUnit. Este ejercicio es la base sobre la que construir una aplicación profesional.

❓ Preguntas frecuentes sobre 50 ejercicios de Java resueltos paso a paso

Las dudas más comunes respondidas de forma clara y directa.

Esta guía incluye 50 ejercicios de Java organizados en 10 categorías temáticas, desde nivel principiante hasta avanzado, más un proyecto integrador completo que combina todos los conceptos.
No. Los ejercicios están organizados de forma progresiva. Los primeros apartados (variables, condicionales, bucles) son aptos para principiantes absolutos. Los últimos (colecciones, POO avanzada) requieren conocimientos intermedios.
Todos los ejercicios son compatibles con Java 8 o superior. Algunos ejercicios de colecciones usan características de Java 11+. Recomendamos Java 17 LTS o Java 21 LTS para la mejor experiencia.
Puedes usar cualquier IDE: IntelliJ IDEA Community (gratuito y muy completo), Eclipse, NetBeans o VS Code con la extensión Java Extension Pack. Para principiantes, IntelliJ IDEA Community es la opción más recomendada.
Sí. Los ejercicios cubren el temario estándar de asignaturas de Programación I y II de grados universitarios: tipos de datos, estructuras de control, arrays, métodos, POO, herencia, polimorfismo, excepciones y colecciones.
Recomendamos seguir el orden propuesto: primero leer el enunciado, intentar resolver el ejercicio por tu cuenta durante al menos 10-15 minutos, y solo después consultar la solución. Es fundamental escribir el código tú mismo, no limitarse a leerlo.
Sí. Muchos ejercicios de arrays, strings, métodos y colecciones son similares a los que se plantean en entrevistas técnicas para puestos junior y de nivel medio. El proyecto integrador demuestra capacidad de diseño orientado a objetos.
Valora este artículo

💬 Foro de discusión

¿Tienes dudas sobre 50 ejercicios de Java resueltos paso a paso? Comparte tu pregunta con la comunidad.

¿Tienes cuenta? o comenta como invitado ↓

Todavía no hay mensajes. ¡Sé el primero en participar!