Soy primíparo, nuevo en la comunidad y me está comiendo el coco un error en NetBeans
Estoy haciendo una aplicación con interfaz gráfica que simule un sistema de apuestas de un hipódromo, son 4 jugadores, cada jugador tiene un nombre, una apuesta, apuesta a un caballo y en caso de ganar gana lo que apuesta y si pierde, pierde lo que apostó. He creado una clase que se llama apostadores
Esta es la clase:
Código:
y en la clase de la interfaz, tengo, además de las instrucciones propias de un Jframe:public class apostadores { private String nombre_apostador; private double apuesta; private double bote = 10000; private int numero_caballo; public String getNombre_apostador() { return nombre_apostador; } public void setNombre_apostador(String nombre_apostador) { this.nombre_apostador = nombre_apostador; } public double getApuesta() { return apuesta; } public void setApuesta(double apuesta) { this.apuesta = apuesta; } public double getBote() { return bote; } public int getNumero_caballo() { return numero_caballo; } public void setNumero_caballo(int numero_caballo) { this.numero_caballo = numero_caballo; } public void ganador(){ bote = bote + apuesta; } public void perdedores(){ if(dinero()){ eliminado(); } else { perdedor(); } } private void perdedor(){ bote = bote - apuesta; } private boolean dinero(){ return apuesta>bote; } public void eliminado(){ nombre_apostador = "ELIMINADO"; apuesta = 0; bote = 0; numero_caballo = -1; } }
Código:
Lo que sucede es que cuando trato de agregar al primer jugador -porque solo intenté agregar al primero a pesar de ser un arreglo de 4 posiciones para saber si funcionaba bien- me salta este error horrible: import javax.swing.JOptionPane; public class Japuestas extends javax.swing.JFrame { apostadores jugadores[] = new apostadores[4]; carrera c = new carrera(); private void btnapostarActionPerformed(java.awt.event.ActionEvent evt) { enviar_jugador1(); } private void enviar_jugador1(){ ingresar_nombre(0, txtjugador1.getText()); ingresar_caballo(0, caballos1.getSelectedIndex()); validar_apuesta(0, Double.parseDouble(txtapuesta1.getText())); } // Método para ingresar los valores de cada jugador private void ingresar_nombre(int posicion, String nombre){ jugadores[posicion].setNombre_apostador(nombre); } private void ingresar_caballo(int posicion, int numero){ jugadores[posicion].setNumero_caballo(numero); } private void validar_apuesta(int posicion, double apuesta){ double a=apuesta; while(jugadores[posicion].getBote()<a){ a = Double.parseDouble (JOptionPane.showInputDialog("El jugador" +""+ jugadores[posicion].getNombre_apostador() +""+"no puede apostar más del dinero que tiene. Digite una apuesta válida")); } ingresar_apuesta(posicion, a); } private void ingresar_apuesta(int posicion, double apuesta){ jugadores[posicion].setApuesta(apuesta); } private void validar_resultados(int posicion){ if(jugadores[posicion].getNumero_caballo() == c.getNumeroCaballo()){ jugadores[posicion].ganador(); } else { jugadores[posicion].perdedores(); } } // Fin de los metodos para ingresar a los jugadores
Código:
Y no entiendo que puede estar pasando, creo que el vector se crea bien y los valores se envían bien por parámetros, así que acudo a ustedes hombres y mujeres mayores de 30 años para que me iluminen ;) Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at Japuestas.ingresar_nombre(Japuestas.java:321) at Japuestas.enviar_jugador1(Japuestas.java:312) at Japuestas.btnapostarActionPerformed(Japuestas.java:308) at Japuestas.access$800(Japuestas.java:2) at Japuestas$9.actionPerformed(Japuestas.java:136) 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:6535) at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) at java.awt.Component.processEvent(Component.java:6300) at java.awt.Container.processEvent(Container.java:2236) at java.awt.Component.dispatchEventImpl(Component.java:4891) at java.awt.Container.dispatchEventImpl(Container.java:2294) at java.awt.Component.dispatchEvent(Component.java:4713) 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:2750) at java.awt.Component.dispatchEvent(Component.java:4713) 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:76) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) 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:76) 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)
De antemano un saludo.