Java - Error al intentar eliminar datos de un HashMap java

 
Vista:
sin imagen de perfil

Error al intentar eliminar datos de un HashMap java

Publicado por oscar (1 intervención) el 18/01/2023 10:01:32
Buenos días, estoy intentando hacer un programa para gestionar datos de alumnos, el ejercicio me pide que lo haga con un Map, me pide que cree unos cuantos alumnos antes de empezar, y en otro apartado, que pueda meter nuevos alumnos, hasta ahí bien, pero en el siguiente apartado, me pide que pueda eliminar los datos de un alumno, los alumnos que he creado antes los elimina sin problema, pero al eliminar los alumnos nuevos, me da error, alguien sabría decirme por qué? Este es mi código. (Obviamente los datos son inventados).


import java.security.Key;
import java.util.*;

public class Main {
public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

Alumnos pedroGomez = new Alumnos("Pedro", "Gómez Susín", "12345678A", "[email protected]", "DAM1", 8.3, 7.5, 6);
Alumnos juanLopez = new Alumnos("Juan", "López Marín", "87654321B", "[email protected]", "DAM1", 7.1, 9.5, 4.3);
Alumnos mariaCasas = new Alumnos("María", "Casas Gil", "11111111C", "[email protected]", "DAM2", 3.9, 6.0, 5.4);
Alumnos lauraPrieto = new Alumnos("Laura", "Prieto Esteban", "22222222D", "[email protected]", "DAM2", 6.5, 4.0, 9.8);


ArrayList<Alumnos> listaAlumnos = new ArrayList<>();
listaAlumnos.add(pedroGomez);
listaAlumnos.add(juanLopez);
listaAlumnos.add(lauraPrieto);

HashMap<String, Alumnos> mapaAlumnos = new HashMap<>();
mapaAlumnos.put("12345678A", pedroGomez);
mapaAlumnos.put("87654321B", juanLopez);
mapaAlumnos.put("11111111C", mariaCasas);
mapaAlumnos.put("22222222D", lauraPrieto);



System.out.println("Gestión de los alumnos de DAM");
System.out.println("");
System.out.println("Opciones: ");
System.out.println("*****************************");
System.out.println("");
System.out.println("1.- Mostrar nombre y apellidos de todos los alumnos");
System.out.println("2.- Mostrar nombre y apellidos de todos los alumnos de un grupo determinado");
System.out.println("3.- Mostrar nombre y apellidos de todos los alumnos con todas las notas aprobadas");
System.out.println("4.- Mostrar todos los datos de un alumno con un DNI determinado");
System.out.println("5.- Mostrar todos los datos de los alumnos suspensos de una asignatura determinada");
System.out.println("6.- Añadir alumno nuevo");
System.out.println("7.- Borrar datos de un alumno");
System.out.println("8.- Mostrar la media de una asignatura determinada");
System.out.println("9.- Mostrar la media de las notas de un alumno determinado");
System.out.println("0.- Para salir del programa");
System.out.println("");
System.out.println("*****************************");
System.out.println("Para comenzar, introduce una opción: ");

int opcion = sc.nextInt();
sc.skip("\n");
while (opcion != 0) {
switch (opcion) {
case 1 -> {
System.out.println("Nombre y apellidos de todos los alumnos:");
for (Map.Entry<String, Alumnos> alumno : mapaAlumnos.entrySet()) {
alumno.getValue().nombreApellidos(mapaAlumnos);
}

}
case 2 -> {
System.out.println("¿De qué grupo quieres ver la lista de alumnos (DAM1/DAM2)?");
String grupo = sc.next();
System.out.println("Nombre y apellidos de los alumnos de " + grupo + ": ");

for (Map.Entry<String, Alumnos> alumno : mapaAlumnos.entrySet()) {
if (grupo.equals("DAM1") && alumno.getValue().getGrupo().equals("DAM1")) {
alumno.getValue().nombreApellidos(mapaAlumnos);

} else if (grupo.equals("DAM2") && alumno.getValue().getGrupo().equals("DAM2 ")) {
alumno.getValue().todosDatos(mapaAlumnos);
}
}
}
case 3 -> {
System.out.println("Nombre y apellidos de los alumnos con todas las notas aprobadas: ");
for (Map.Entry<String, Alumnos> alumno : mapaAlumnos.entrySet()) {
if (alumno.getValue().getNotaBasesDatos() >= 5 && alumno.getValue().getNotaIngles() >= 5 && alumno.getValue().getNotaProgramacion() >= 5) {
alumno.getValue().nombreApellidos(mapaAlumnos);
}
}
}
case 4 -> {
System.out.println("Escriba el DNI del alumno para visualizar sus datos: ");
String dni = sc.next();
System.out.println("Datos del alumno con DNI " + dni + ": ");
for (Map.Entry<String, Alumnos> alumno : mapaAlumnos.entrySet()) {
if (dni.equals(alumno.getKey())) {
alumno.getValue().todosDatos(mapaAlumnos);
}
}
}
case 5->{

System.out.println("Escriba una asignatura para visualizar los datos de los alumnos que la han suspendido: ");
String asignaturaSuspendida = sc.nextLine();

System.out.println("Alumnos que han suspendido la asignatura " + asignaturaSuspendida + ": ");
for (Map.Entry<String, Alumnos> alumno : mapaAlumnos.entrySet()) {
if(asignaturaSuspendida.equals("Programación") && alumno.getValue().getNotaProgramacion() < 5){
alumno.getValue().todosDatos(mapaAlumnos);
}else if (asignaturaSuspendida.equals("Bases de Datos") && alumno.getValue().getNotaBasesDatos() < 5){
alumno.getValue().todosDatos(mapaAlumnos);
}else if(asignaturaSuspendida.equals("Inglés") && alumno.getValue().getNotaIngles() < 5)
alumno.getValue().todosDatos(mapaAlumnos);
}
}
case 6->{
System.out.println("Para añadir un nuevo alumno, introduzca sus datos.");
System.out.println("");
System.out.println("Nombre: ");
String nombre = sc.nextLine();
System.out.println("Apellidos: ");
String apellidos = sc.nextLine();
System.out.println("DNI: ");
String dniNuevo = sc.next();
System.out.println("Correo electrónico: ");
String correo = sc.next();
System.out.println("Grupo: ");
String grupo = sc.next();
System.out.println("Nota Programación: ");
double notaP = sc.nextDouble();
System.out.println("Nota Bases de Datos: ");
double notaB = sc.nextDouble();
System.out.println("Nota Inglés: ");
double notaI = sc.nextDouble();
System.out.println("");
System.out.println("Un nuevo alumno ha sido introducido en el sistema.");
System.out.println("");
Alumnos alumnoNuevo = new Alumnos(nombre, apellidos, dniNuevo, correo, grupo, notaP, notaB, notaI);
listaAlumnos.add(alumnoNuevo);
mapaAlumnos.put(dniNuevo, alumnoNuevo);

}

case 7->{
System.out.println("Para eliminar los datos de un alumno, introduzca su DNI: ");
String dni = sc.next();
for (Map.Entry<String, Alumnos> alumno : mapaAlumnos.entrySet()) {
if(dni.equals(alumno.getKey())){
mapaAlumnos.remove(dni);
}
}
}
}
System.out.println("**********************");
System.out.println("Introduce otra opción: ");
opcion = sc.nextInt();
sc.skip("\n");
}
System.out.println("Adiós!");
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder