0 votos
por (60 puntos) en Java
Hola tengo el siguiente problema tengo un hasmap de tipo Integer que su key es un entero

pero ademas varios values, como nombre y rut mi problema es que quiero comparar entre el nombre y el value que se guardo en el hashmap como nombre y no me funciona.

con la key no tengo problemas porque ocupo la propiedad .containsKey(key) y no hay problema ni para eliminar o mostrar una busqueda , pero cuando quiero consultar en una condicon por el nombre o rut siempre me aparece esto:

<pre>(Exception in thread "main" java.lang.NullPointerException
    at java.lang.String$CaseInsensitiveComparator.compare(String.java:1217)
    at java.lang.String$CaseInsensitiveComparator.compare(String.java:1211)
    at java.lang.String.compareToIgnoreCase(String.java:1258)
    at Persona.BuscarPorNombre(Persona.java:62)
    at AppAlumno.main(AppAlumno.java:84))
<pre lang='java'>//este es el codigo
//solo de la clase persona.
import java.util.*;

public class Persona {

    private String nombre;
    private String apellido;
    private String run;
    private int edad;
    public  HashMap<Integer,Alumno>hashalum=new HashMap<Integer,Alumno>();

    public Persona() {
    }

    public Persona(String nombre, String apellido, String run, int edad) {
        this.nombre = nombre;
        this.apellido = apellido;
        this.run = run;
        this.edad = edad;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public void setApellido(String apellido) {
        this.apellido = apellido;
    }

    public void setRun(String run) {
        this.run = run;
    }

    public void setEdad(int edad) {
        this.edad = edad;
    }

    public String getNombre() {
        return (this.nombre);
    }

    public String getApellido() {
        return (this.apellido);
    }

    public String getRun() {
        return (this.run);
    }

    public int getEdad() {
        return (this.edad);
    }

      public void BuscarPorNombre(String nombre)
     {
         System.out.println ("ingrese el nombre a buscar");
         nombre=Leer.dato();
         if(nombre.compareToIgnoreCase(getNombre())==0)//aqui esta el problema.
        System.out.println(hashalum.get(nombre));
        else
            System.out.println ("el alumno no existe");

     }

}

< /pre>

1 Respuesta

0 votos
por (8.5k puntos)
Buenas,

Varias cosas:

- Para formatear bien el código: < pre lang='java'>Codigo< /pre> elimina este  y deja solo el del final.

- Porque la clase Persona tiene un HashMap con los alumnos?

- Porque la clase Persona tiene un método de buscar? Puedes ponerme el código en el que usas esta clase para buscar?


Preguntas relacionadas

0 votos
1 respuesta
preguntado por luis117 (20 puntos) Jun 11, 2016 en Java
0 votos
0 respuestas
preguntado por Exodar95 (20 puntos) Ene 28, 2016 en Java
0 votos
1 respuesta
0 votos
0 respuestas
preguntado por yue (20 puntos) Nov 19, 2020 en Java
Bienvenido a Dudas de Programación, donde puedes hacer preguntas y recibir respuestas sobre los problemas más frecuentes de los lenguajes de programación, frameworks de desarrollo y bases de datos que utilices. Foro de Línea de Código

Categorías

...