Java - Error de null pointer

 
Vista:
sin imagen de perfil

Error de null pointer

Publicado por luis-guerron (5 intervenciones) el 14/05/2017 08:05:59
Buenas noches, estoy haciendo un proyecto para mi universidad en el cual me daban un esqueleto del proyecto y le tenia que completar, pero al momento de compilar para probarlo me un error.

1
2
3
4
5
Exception in thread "main" java.lang.NullPointerException
	at mundo.Karaoke.darArtistasCategoria(Karaoke.java:85)
	at interfaz.InterfazKaraoke.actualizarArtistas(InterfazKaraoke.java:349)
	at interfaz.InterfazKaraoke.<init>(InterfazKaraoke.java:115)
	at interfaz.InterfazKaraoke.main(InterfazKaraoke.java:582)

Aqui las lineas de codigo de errores que me señala netbeans.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
     * Permite conocer los artistas de una categoría<br>
     * @param nombreCat Nombre de la categoría de referencia
     * @return La lista de los artistas que pertenecen a la categoría seleccionada
     */
    public ArrayList<Artista> darArtistasCategoria(String nombreCat) {
        ArrayList<Artista> artistasCategoria = new ArrayList<>();
        for (int i = 0; i < artistas.length; i++) {
            if (nombreCat.equals(artistas[i].darCategoria())) {
                artistasCategoria.add((Artista)artistas[i]);
            }
        }
        return artistasCategoria;
    }

1
2
3
4
5
6
7
public void actualizarArtistas(String categoria) {
 
        ArrayList<Artista> artistas = karaoke.darArtistasCategoria(categoria);
 
        panelArtista.actualizarArtistas(artistas);
 
    }

1
actualizarArtistas(c);

1
2
3
4
5
6
7
public void actualizarArtistas(String categoria) {
 
        ArrayList<Artista> artistas = karaoke.darArtistasCategoria(categoria);
 
        panelArtista.actualizarArtistas(artistas);
 
    }

¿Alguna idea de lo que pueda estar pasando? Realmente no encuentro el error,

Gracias de antemano, y agradezco su colaboración.
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
Imágen de perfil de Lawliet
Val: 308
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Error de null pointer

Publicado por Lawliet (303 intervenciones) el 14/05/2017 08:30:10
Hola...

Es complicado ayudarte ya que no brindas el código suficiente para analizar cual es el error, pero por lo que observo todo tu aplicación lo hace el método actualizarArista(), ya que este es el que manda a llamar a tu método de darArtistasCategoria(), al método actualizar le pasas una variable c el cual es un objeto por lo que más seguro es que ese objeto se encuentra como "null" por lo que tendrás que asegurarte bien de que le estas pasando un valor válido para que se ejecute tu programa y no un valor nulo.

Sin más que comentar, quedo al pendiente de cualquier duda y/o comentario.

Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Error de null pointer

Publicado por luis-guerron (5 intervenciones) el 14/05/2017 09:01:07
Gracias por responder, efectivamente todo depende de el método de cargar karaoke.

Aqui, el codigo completo del metodo y sus demas llamadas.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
public void cargarKaraoke() {
 
        try {
 
            Properties datos = new Properties();
 
            FileInputStream in = new FileInputStream(RUTA_ARCHIVO);
 
            datos.load(in);
 
            in.close();
 
            int numArtistas = Integer.parseInt(datos.getProperty("total.artistas"));
 
            for(int i = 1; i <= numArtistas; i++) {
 
                String nombre = datos.getProperty("artista" + i + ".nombre");
 
                String categoria = datos.getProperty("artista" + i + ".categoria");
 
                String imagen = datos.getProperty("artista" + i + ".imagen");
 
                karaoke.agregarArtista(nombre, categoria, imagen);
 
                int numCanciones = Integer.parseInt(datos.getProperty("artista"
                        + i + ".total.canciones"));
 
                for(int j = 1; j <= numCanciones; j++) {
                    String cancion = datos.getProperty("artista" + i + ".cancion"
                            + j + ".nombre");
 
                    int duracion = Integer.parseInt(datos.getProperty("artista"
                            + i + ".cancion" + j + ".duracion"));
 
                    String letra = datos.getProperty("artista" + i + ".cancion"
                            + j + ".letra");
 
                    int dificultad = Integer.parseInt(datos.getProperty( "artista"
                            + i + ".cancion" + j + ".dificultad"));
 
                    String genero = datos.getProperty("artista" + i + ".cancion"
                            + j + ".genero");
 
                    String ruta = datos.getProperty("artista" + i + ".cancion"
                            + j + ".ruta");
 
                    karaoke.agregarCancion(nombre, cancion, duracion, letra,
                            dificultad, genero, ruta);
                }
            }
        }
 
        catch(Exception e) {
 
            JOptionPane.showMessageDialog(this, "No fue posible cargar la información "
                    + "inicial del karaoke " + e.getMessage(), "Error",
                    JOptionPane.ERROR_MESSAGE);
 
        }
 
    }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
     * Permite agregar un artista al Karaoke<br>
     * Busca el final del arreglo de artista y agrega al nuevo artista en esa posición.<br>
     * @param nombreArtista Nombre del artista que se desea agregar
     * @param categoria Categoría a la que pertenece el artista
     * @param imagen Ruta del archivo con la imagen del artista
     */
    public void agregarArtista(String nombreArtista, String categoria, String imagen) {
 
        for (int i = 0; i < artistas.length; i++) {
 
            if (artistas[i] == null) {
 
                artistas[i] = new Artista(nombreArtista, categoria, imagen);
 
            }
 
        }
 
    }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/**
     * Permite agregar una nueva canción a un artista<br>
     * Busca en la lista de artistas el que corresponde al nombre de referencia,<br>
     * si el artista está registrado, se adiciona adiciona la canción al listado<br>
     * de canciones del artista.<br>
     * @param nombreArtista Nombre del artista al cual se desea agregar la canción
     * @param nombreCancion Nombre de la canción a agregar
     * @param duracion Duración en segundos de la canción a agregar
     * @param letra Letra de la canción a agregar
     * @param dificultad Nivel de dificultad de la canción a agregar
     * @param genero Género de la canción a agregar
     * @param ruta Ruta del archivo con la pista de la canción a agregar
     * @return Valor 0 si la canción no fue agregada, 1 si la canción se agrego sin novedad,
     *         2 si la duración fue ajustada.
     */
    public int agregarCancion(String nombreArtista, String nombreCancion, int duracion,
            String letra, int dificultad, String genero, String ruta) {
 
        int rta = 0;
 
        for (int i = 0; i < artistas.length; i++) {
 
            if (nombreArtista.equals(artistas[i].darNombre())) {
 
                rta = artistas[i].agregarCancion(genero, duracion, letra, dificultad, genero, ruta);
 
            } else
 
                rta = 0;
 
        }
 
        return rta;
    }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public int agregarCancion(String nombre, int duracion, String letra, int dificultad,
            String genero, String ruta) {
 
        int rta = 0;
 
        for (int i = 0; i < canciones.size(); i++) {
 
            if (nombre.equals(canciones.get(i).darNombre()) &&duracion !=
                    canciones.get(i).darDuracion()) {
 
                canciones.set(i, new Cancion(dificultad, duracion, genero, nombre, letra, ruta));
 
                rta = 2;
 
            } else if (nombre.equals(canciones.get(i).darNombre()) && duracion ==
                    canciones.get(i).darDuracion()) {
 
                rta = 0;
 
            } else {
 
                canciones.add(new Cancion(dificultad, duracion, genero, nombre, letra, ruta));
 
                rta = 1;
 
            }
 
        }
 
        return rta;
 
    }

A mi parecer estoy pasando los parametros correctamente, pero si me equivoco por favor corrigeme.

De nuevo gracias por la ayuda prestada
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar