Java - NullPointerException

 
Vista:
sin imagen de perfil

NullPointerException

Publicado por Daniel (4 intervenciones) el 28/12/2017 04:31:15
Buenas, he estado haciendo un programa en Java, es sobre un torneo de fútbol, son 8 partidos iniciales y 7 partidos que le siguen, estoy trabajando con una lista doblemente enlazada, un árbol y un arreglo e interfaz gráfica (JFrame) a la hora de correr el programa me manda un error de NullPointerException en una linea de código, una linea de código en donde utilizo el arreglo, estuve montando el mismo código en un proyecto sin interfaz gráfica, solo se maneja con JOptionPane y me sirve perfecto, estuve viendo los posibles orígenes y las posibles soluciones del problema, pero, nada me ha funcionado, dejo el código indicando la linea donde se cae, para ver si me pueden ayudar, se los agradecería un montón.
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
public class Ventana extends javax.swing.JFrame {
 
    public static Lista lista = new Lista();
    public static Arbol arbol = new Arbol();
    public static Partido[] partidos = new Partido[16];
    public static Equipo ganador = new Equipo();
    public static int eqip1gols;
    public static int eqip2gols;
 
    static Partido partido1;
    static Partido partido2;
    static Partido partido3;
    static Partido partido4;
    static Partido partido5;
    static Partido partido6;
    static Partido partido7;
    static Partido partido8;
 
    static Partido partido9 = new Partido();
    static Partido partido10 = new Partido();
    static Partido partido11 = new Partido();
    static Partido partido12 = new Partido();
    static Partido partido13 = new Partido();
    static Partido partido14 = new Partido();
    static Partido partido15 = new Partido();
 
    public Ventana() {
        initComponents();
 
        //partidos[0] = new Partido();
 
        lista.insertar(new Equipo(1, "Uruguay"));
        lista.insertar(new Equipo(2, "Corea del Sur"));
        lista.insertar(new Equipo(3, "Estados Unidos"));
        lista.insertar(new Equipo(4, "Ghana"));
        lista.insertar(new Equipo(5, "Paises Bajos"));
        lista.insertar(new Equipo(6, "Eslovaquia"));
        lista.insertar(new Equipo(7, "Brasil"));
        lista.insertar(new Equipo(8, "Chile"));
        lista.insertar(new Equipo(9, "Argentina"));
        lista.insertar(new Equipo(10, "Mexico"));
        lista.insertar(new Equipo(11, "Alemania"));
        lista.insertar(new Equipo(12, "Inglaterra"));
        lista.insertar(new Equipo(13, "Paraguay"));
        lista.insertar(new Equipo(14, "Japon"));
        lista.insertar(new Equipo(15, "España"));
        lista.insertar(new Equipo(16, "Portugal"));
 
        partido1 = arbol.insertarIniciales(1, lista.extrae(1), lista.extrae(2));
        partido2 = arbol.insertarIniciales(2, lista.extrae(3), lista.extrae(4));
        partido3 = arbol.insertarIniciales(3, lista.extrae(5), lista.extrae(6));
        partido4 = arbol.insertarIniciales(4, lista.extrae(7), lista.extrae(8));
        partido5 = arbol.insertarIniciales(5, lista.extrae(9), lista.extrae(10));
        partido6 = arbol.insertarIniciales(6, lista.extrae(11), lista.extrae(12));
        partido7 = arbol.insertarIniciales(7, lista.extrae(13), lista.extrae(14));
        partido8 = arbol.insertarIniciales(7, lista.extrae(14), lista.extrae(16));
 
        partidos[0] = partido1;
        partidos[1] = partido2;
        partidos[2] = partido3;
        partidos[3] = partido4;
        partidos[4] = partido5;
        partidos[5] = partido6;
        partidos[6] = partido7;
        partidos[7] = partido8;
        partidos[8] = partido9;
        partidos[9] = partido10;
        partidos[10] = partido11;
        partidos[11] = partido12;
        partidos[12] = partido13;
        partidos[13] = partido14;
        partidos[14] = partido15;
    }
 
    private void progresoEquiposButtonActionPerformed(java.awt.event.ActionEvent evt) {
        //try {    
            for (int i = 0; i < 8; i++) {
                eqip1gols = 0;
                eqip2gols = 0;
                //esta linea de abajo es la que produce que el programa se caiga
                JOptionPane.showMessageDialog(null, "Partido " + (i+1) + "\n" + partidos[i].getEquipo1().getNombre() + " vs " + partidos[i].getEquipo2().getNombre());
                while(eqip1gols == eqip2gols) {
                    try {
                        eqip1gols = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite los goles del primer equipo"));
                        eqip2gols = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite los goles del segundo equipo"));
                    } catch(Exception e) {
                        System.err.println(e.getMessage());
                    }
                    if(eqip1gols == eqip2gols) {
                        JOptionPane.showMessageDialog(null, "Empate");
                    }
                }
                ganador =  eqip1gols > eqip2gols ? partidos[i].getEquipo1() : partidos[i].getEquipo2();
                partidos[i].setGanador(ganador);
                JOptionPane.showMessageDialog(null, "Ganador" + "\n" + ganador.getNombre());
                System.out.println(partidos[i]);
            }
 
            int temp = 0;
            for (int i = 8; i < 15; i++) {
                eqip1gols = 0;
                eqip2gols = 0;
                JOptionPane.showMessageDialog(null, "Partido " + (i + 1) + "\n" + partidos[temp].getGanador().getNombre() +" vs " + partidos[temp + 1].getGanador().getNombre());
                while(eqip1gols == eqip2gols) {
                    try{
                        eqip1gols = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite los goles del primer equipo"));
                        eqip2gols = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite los goles del segundo equipo"));
                    } catch(Exception e) {
                        System.err.println(e.getMessage());
                    }
                    if(eqip1gols == eqip2gols) {
                        JOptionPane.showMessageDialog(null, "Empate");
                    }
                }
                ganador = eqip1gols > eqip2gols ? partidos[temp].getGanador() : partidos[temp + 1].getGanador();
                partidos[i].setGanador(ganador);
                partidos[i] = arbol.insertarPartidosClasificatorios(i + 1, partidos[temp], partidos[temp + 1], ganador);
                JOptionPane.showMessageDialog(null, "Ganador: " + "\n" + ganador.getNombre());
                System.out.println(partidos[i]);
                temp = temp + 2;
            }
            JOptionPane.showMessageDialog(null, "Equipo ganador de la final: " + partido15.getGanador().getNombre());
            System.out.println("La ruta del ganador:");
            arbol.inOrden(ganador);
        /*} catch(Exception e) {
            JOptionPane.showMessageDialog(null, e, "Error Compruebe el Codigo", JOptionPane.ERROR_MESSAGE);
            System.out.println("Error" + e);
        }*/
    }
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
sin imagen de perfil

NullPointerException

Publicado por Juan Francisco (58 intervenciones) el 28/12/2017 10:24:14
Deberias poner las demas clases ..para localizar el nullpointer...por que creo que el problema va por alli..aunque supongo que la clase partido la componga Dos instancias de la Clase Equipo..creas Equipos ..los añades a una lista ...y la clase arbol te hace los emparejamientos ..con el metodo ..arbol.insertarIniciales..eso te devuelve una instancia de Partido..que lo almacenas en la variable partido1,partido2...etc y esa variable la vas almacenado en un array o arreglo de Partidos[ ]..no sabria decirte tendrias que ver si en arreglo tienes una instancia de Partido o un null...en vez de acceder al metodo getEquipo1...directamente pon partidos[i] ...si te aparece el un numero largo es que hay una instancia de Partido sino aparecera un null.. Otra cosa que la clase partido que la componen dos instancias de la clase Equipo ..hay tengan una instancia y no null ..si tienen un null te dara fallo ..tendria que ver dentro de clase Partido cuando instancias los objetos de Equipos...y sobre todo en el metodo arbol.insertarIniciales ..que te devuelva una instancia de Partido..y que esa instancia tenga dos instancias de Equipos...es decir que no halla nada null..ni Partido ni Equipo1 y Equipo2

No se si me explique bien pero si ya has mirado eso que te dije ..tendria que ver las demas clases..
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
Val: 214
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

NullPointerException

Publicado por Juanki (131 intervenciones) el 28/12/2017 13:51:21
Lo que tiene que hacer es poner el error completo, que en el caso del nullpointerexception dirá que objeto es null y a partir de ahí ya se podrá localizar y corregir en error.

Un saludito y feliz año!!
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

NullPointerException

Publicado por Daniel (4 intervenciones) el 28/12/2017 18:27:57
Buenas, para ser más especifico con respecto al error: al ejecutar el programa, 7 partidos de los 8 primeros funcionan perfecto, es a la hora de pasar al 8 y ultimo de la primera fase de eliminación que sale el error, pero, esto solo ocurre en el proyecto que tiene interfaz, en el que solo tiene JOptionPane todo funciona bien. Comparto el mensaje de error y los proyectos para que puedan confirmar.

Mensaje de Error:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at torneofutbol.Ventana.progresoEquiposButtonActionPerformed(Ventana.java:206)
at torneofutbol.Ventana.access$000(Ventana.java:14)
at torneofutbol.Ventana$1.actionPerformed(Ventana.java:150)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6533)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6298)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
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
Val: 755
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

NullPointerException

Publicado por Yamil Bracho (2315 intervenciones) el 28/12/2017 18:47:23
Segun veo el codigo tienes estas lineas :

...
partido6 = arbol.insertarIniciales(6, lista.extrae(11), lista.extrae(12));
partido7 = arbol.insertarIniciales(7, lista.extrae(13), lista.extrae(14));
partido8 = arbol.insertarIniciales(7, lista.extrae(14), lista.extrae(16));

Segun la progresion que llevas de los variables, partido8 no deberia ser :

partido8 = arbol.insertarIniciales(8, lista.extrae(15), lista.extrae(16));
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

NullPointerException

Publicado por Daniel (4 intervenciones) el 28/12/2017 18:53:23
Diosito, sí, ya lo corregí, ahora hace los primeros 8 partidos y luego se cae, lanzando el mismo error en la misma linea, se supone que al hacer ese primer for() se tendría que pasar al segundo, pero no lo hace y solo se cae.
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

NullPointerException

Publicado por Juan Francisco (58 intervenciones) el 29/12/2017 12:36:58
Estuve probando tu ejercicio y el problema es que el partido8 , el equipo1 llega un null

antes de la linea que te da el erro puse esto para ver los equipos ..


1
2
3
System.out.println(partidos[i].getEquipo1()+" "+partidos[i].getEquipo2());
//Antes de la linea que da el error todo va bien hasta el partido 8
JOptionPane.showMessageDialog(null, "Partido " + (i+1) + "\n" + partidos[i].getEquipo1().getNombre() + " vs " + partidos[i].getEquipo2().getNombre());

Esto es lo que saldria por consola junto con lo que pusiste

Uruguay Corea del Sur
Partido 1: Uruguay vs Corea del Sur
Ganador: Uruguay
Estados Unidos Ghana
Partido 2: Estados Unidos vs Ghana
Ganador: Estados Unidos
Paises Bajos Eslovaquia
Partido 3: Paises Bajos vs Eslovaquia
Ganador: Paises Bajos
Brasil Chile
Partido 4: Brasil vs Chile
Ganador: Brasil
Argentina Mexico
Partido 5: Argentina vs Mexico
Ganador: Argentina
Alemania Inglaterra
Partido 6: Alemania vs Inglaterra
Ganador: Alemania
Paraguay Japon
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Partido 7: Paraguay vs Japon
Ganador: Paraguay
null Portugal ---> Este es el partido 8 y el equipo 1 da null ahora hay que saber por que da null ese equipo

tienes que corregir esto
partido8 = arbol.insertarIniciales(7, lista.extrae(14), lista.extrae(16));
seria asi..
partido8 = arbol.insertarIniciales(8, lista.extrae(15), lista.extrae(16));

Pero despues el siquiente llega los dos a null null..
LOS PRIMEROS PARTIDOS
Uruguay Corea del Sur
Partido 1: Uruguay vs Corea del Sur
Ganador: Uruguay
Estados Unidos Ghana
Partido 2: Estados Unidos vs Ghana
Ganador: Estados Unidos
Paises Bajos Eslovaquia
Partido 3: Paises Bajos vs Eslovaquia
Ganador: Paises Bajos
Brasil Chile
For input string: ""
Partido 4: Brasil vs Chile
Ganador: Brasil
Argentina Mexico
Partido 5: Argentina vs Mexico
Ganador: Argentina
Alemania Inglaterra
Partido 6: Alemania vs Inglaterra
Ganador: Alemania
Paraguay Japon
Partido 7: Paraguay vs Japon
Ganador: Paraguay
España Portugal
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Partido 8: España vs Portugal
Ganador: España
null null

Supongo por que utlizas el constructor por defecto de Partido y no instancias los equipos

partido9 = new Partido();
partido10 = new Partido();
partido11 = new Partido();
partido12 = new Partido();
partido13 = new Partido();
partido14 = new Partido();
partido15 = new Partido();
De todas maneras en for vas de 0 hasta que sea menor de 9 ,pero en el array el partido 8 esta en la posicion 7 ,si quieres que llege hasta solo el partido 8 y no entre en el 9 pon en el bucle que llege hasta que sea menor de 8 , asi solo accedera el array en el partido8 que esta guardado en la posicion 7 de tu array

for (i = 0; i < 9; i++) --> for (i = 0; i < 8; i++)

Despues de eso no da ningun fallo pero parece que se queda colgado..
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

NullPointerException

Publicado por Juan Francisco (58 intervenciones) el 29/12/2017 13:03:48
Vale es el while del principio

while (i < 9) -> while (i < 8)

vale y el suiguiente fo deberia has 15 y no hasta 16..por que en la posicion 15 no hay nada..
for (i = 8; i < 16; i++) ---> cambiar for (i = 8; i < 15; i++)

despues de eso no me da ningun error ....
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

NullPointerException

Publicado por Daniel (4 intervenciones) el 29/12/2017 17:09:00
Sí, anoche estuve viendo y lo pude resolver, de todas formas muchísimas gracias, me ha ayudado bastante.
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