JAVA 2
Ejercicio 1: Gestión de Estudiantes en un Curso
Enunciado
Vamos a desarrollar un programa de gestión de estudiantes en un curso. Cada estudiante
tendrá un nombre, edad y calificación.
El sistema permitirá:
Agregar nuevos estudiantes.
Eliminar estudiantes por nombre.
Modificar la calificación de un estudiante.
Listar todos los estudiantes registrados.
La gestión de estudiantes se realizará dentro de una clase Curso, que contendrá un
ArrayList de Estudiante.
Especificación técnica
Clase Estudiante
Atributos:
o String nombre
o int edad
o double calificacion
Métodos:
o Estudiante(String nombre, int edad, double calificacion):
Constructor.
o void mostrarInfo(): Imprime la información del estudiante.
Clase Curso
Atributos:
o ArrayList<Estudiante> estudiantes
Métodos:
o void agregarEstudiante(Estudiante e): Añade un estudiante al
curso.
o void eliminarEstudiante(String nombre): Busca y elimina un
estudiante por nombre.
o void modificarCalificacion(String nombre, double
nuevaCalificacion): Busca y cambia la calificación de un estudiante.
o void listarEstudiantes(): Muestra la lista de estudiantes.
Solución:
import [Link];
// Clase Estudiante
class Estudiante {
String nombre;
int edad;
double calificacion;
// Constructor
public Estudiante(String nombre, int edad, double calificacion) {
[Link] = nombre;
[Link] = edad;
[Link] = calificacion;
public void mostrarInfo() {
[Link]("Nombre: " + nombre + ", Edad: " + edad + ", Calificación: " +
calificacion);
// Clase Curso con ArrayList de Estudiantes
class Curso {
private ArrayList<Estudiante> estudiantes;
// Constructor
public Curso() {
[Link] = new ArrayList<>();
}
public void agregarEstudiante(Estudiante e) {
[Link](e);
public void eliminarEstudiante(String nombre) {
[Link](e -> [Link](nombre));
public void modificarCalificacion(String nombre, double nuevaCalificacion) {
for (Estudiante e : estudiantes) {
if ([Link](nombre)) {
[Link] = nuevaCalificacion;
return;
public void listarEstudiantes() {
for (Estudiante e : estudiantes) {
[Link]();
// Clase principal
public class Main {
public static void main(String[] args) {
Curso curso = new Curso();
[Link](new Estudiante("Ana", 20, 9.5));
[Link](new Estudiante("Carlos", 22, 8.0));
[Link](new Estudiante("Lucía", 21, 7.8));
[Link]("Lista inicial de estudiantes:");
[Link]();
[Link]("Carlos", 9.2);
[Link]("\nDespués de modificar la calificación de Carlos:");
[Link]();
[Link]("Lucía");
[Link]("\nDespués de eliminar a Lucía:");
[Link]();
Ejercicio 2: Inventario de Productos en una Tienda
Enunciado
Vamos a desarrollar un programa para administrar el inventario de productos de una
tienda.
Cada producto tendrá un nombre, precio y cantidad disponible. El sistema permitirá:
Agregar productos al inventario.
Eliminar productos por nombre.
Modificar el precio de un producto.
Actualizar la cantidad en stock.
Listar todos los productos disponibles.
La gestión se realizará dentro de una clase Inventario, que contendrá un ArrayList de
Producto.
Especificación técnica
Clase Producto
Atributos:
o String nombre
o double precio
o int cantidad
Métodos:
o Producto(String nombre, double precio, int cantidad):
Constructor.
o void mostrarInfo(): Imprime la información del producto.
Clase Inventario
Atributos:
o ArrayList<Producto> productos
Métodos:
o void agregarProducto(Producto p): Añade un producto al
inventario.
o void eliminarProducto(String nombre): Busca y elimina un
producto por nombre.
o void modificarPrecio(String nombre, double nuevoPrecio):
Cambia el precio de un producto.
o void actualizarCantidad(String nombre, int nuevaCantidad):
Cambia la cantidad en stock.
o void listarProductos(): Muestra todos los productos.
Solución:
import [Link];
// Clase Producto
class Producto {
String nombre;
double precio;
int cantidad;
// Constructor
public Producto(String nombre, double precio, int cantidad) {
[Link] = nombre;
[Link] = precio;
[Link] = cantidad;
public void mostrarInfo() {
[Link]("Producto: " + nombre + ", Precio: " + precio + "€, Cantidad en stock: "
+ cantidad);
}
// Clase Inventario con ArrayList de Productos
class Inventario {
private ArrayList<Producto> productos;
// Constructor
public Inventario() {
[Link] = new ArrayList<>();
public void agregarProducto(Producto p) {
[Link](p);
public void eliminarProducto(String nombre) {
[Link](p -> [Link](nombre));
public void modificarPrecio(String nombre, double nuevoPrecio) {
for (Producto p : productos) {
if ([Link](nombre)) {
[Link] = nuevoPrecio;
return;
public void actualizarCantidad(String nombre, int nuevaCantidad) {
for (Producto p : productos) {
if ([Link](nombre)) {
[Link] = nuevaCantidad;
return;
}
public void listarProductos() {
for (Producto p : productos) {
[Link]();
// Clase principal
public class Main {
public static void main(String[] args) {
Inventario tienda = new Inventario();
[Link](new Producto("Laptop", 1200, 5));
[Link](new Producto("Smartphone", 800, 10));
[Link](new Producto("Tablet", 400, 8));
[Link]("Inventario inicial:");
[Link]();
[Link]("Smartphone", 750);
[Link]("Laptop", 3);
[Link]("\nDespués de modificar precio y cantidad:");
[Link]();
[Link]("Tablet");
[Link]("\nDespués de eliminar la Tablet:");
[Link]();
}
Solución Ejercicio 2 con Iterator:
import [Link];
import [Link];
// Clase Producto
class Producto {
String nombre;
double precio;
int cantidad;
// Constructor
public Producto(String nombre, double precio, int cantidad) {
[Link] = nombre;
[Link] = precio;
[Link] = cantidad;
public void mostrarInfo() {
[Link]("Producto: " + nombre + ", Precio: " + precio + "€, Cantidad: " +
cantidad);
// Clase Inventario con ArrayList y uso de Iterator
class Inventario {
private ArrayList<Producto> productos;
// Constructor
public Inventario() {
[Link] = new ArrayList<>();
}
public void agregarProducto(Producto p) {
[Link](p);
public void eliminarProducto(String nombre) {
Iterator<Producto> iterator = [Link]();
while ([Link]()) {
Producto p = [Link]();
if ([Link](nombre)) {
[Link](); // Eliminación segura con Iterator
public void modificarPrecio(String nombre, double nuevoPrecio) {
for (Producto p : productos) {
if ([Link](nombre)) {
[Link] = nuevoPrecio;
return;
public void actualizarCantidad(String nombre, int nuevaCantidad) {
for (Producto p : productos) {
if ([Link](nombre)) {
[Link] = nuevaCantidad;
return;
}
}
public void listarProductos() {
for (Producto p : productos) {
[Link]();
// Clase principal
public class Main {
public static void main(String[] args) {
Inventario tienda = new Inventario();
[Link](new Producto("Laptop", 1200, 5));
[Link](new Producto("Smartphone", 800, 10));
[Link](new Producto("Tablet", 400, 8));
[Link]("Inventario inicial:");
[Link]();
[Link]("Smartphone", 750);
[Link]("Laptop", 3);
[Link]("\nDespués de modificar precio y cantidad:");
[Link]();
[Link]("Tablet");
[Link]("\nDespués de eliminar la Tablet:");
[Link]();