Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Soy primiparo y tengo menos de 30 y me estoy volviendo chango ;)

Estas en el tema de Soy primiparo y tengo menos de 30 y me estoy volviendo chango ;) en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 19/04/2016, 13:45
 
Fecha de Ingreso: abril-2016
Mensajes: 1
Antigüedad: 8 años
Puntos: 0
Exclamación Soy primiparo y tengo menos de 30 y me estoy volviendo chango ;)

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.
  #2 (permalink)  
Antiguo 21/04/2016, 04:52
Avatar de rgf1987  
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 11 años, 3 meses
Puntos: 22
Respuesta: Soy primiparo y tengo menos de 30 y me estoy volviendo chango ;)

Creas el array de objetos

Código Java:
Ver original
  1. apostadores jugadores[] = new apostadores[4];
pero no lo cargas, sino que directamente intentas acceder al primer elemento aquí

Código Java:
Ver original
  1. // Método para ingresar los valores de cada jugador
  2.     private void ingresar_nombre(int posicion, String nombre){
  3.        
  4.         jugadores[posicion].setNombre_apostador(nombre);
  5.     }

y como el array esta vacio te salta el NullPointer, tendrías que crear los objetos e introducirlos en la posicion correspondiente del array
Código Java:
Ver original
  1. Aportadores a = new Apostadores();
  2. apostadores[0]=a;

Deberías repasar la teoría de objetos porque no pareces tenerlo muy claro

Etiquetas: arreglos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:18.