Hola a todos :D
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:
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;
}
}
y en la clase de la interfaz, tengo, además de las instrucciones propias de un Jframe:
Código:
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
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:
Código:
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)
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 ;)
De antemano un saludo.