Java - ¿Hacer que el usuario rellene los atributos para crear un objeto?

   
Vista:

¿Hacer que el usuario rellene los atributos para crear un objeto?

Publicado por Jose (32 intervenciones) el 16/10/2017 23:15:02
Buenas. Tengo 3 clases. Se me pide que el usuario introduzca atributos del objeto por pantalla y se cree el objeto a partir de lo que ha introducido. Esta es la clase en la que tengo problemas. La clase Videoconsola gestiona la clase Videojuegos y tiene el método para añadir un juego. Pero cuando lo ejecuto y el usuario introduce el primer atributo, me sale un error de NullPointer. ¿Alguien podría ayudarme? Gracias.

package ejercicioacceso;

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
import java.io.*;
import java.util.ArrayList;
import javax.swing.JOptionPane;
 
public class Videoconsola {
    ArrayList<Videojuegos> vList;
    Videojuegos v;
 
    public void Añadir(){
        String[] options = {"Sí", "No"};
        int seleccion;
 
            JOptionPane.showMessageDialog(null, "Introduce los datos");
 
            v.setID(Integer.parseInt(JOptionPane.showInputDialog("ID")));
            v.setNombre(JOptionPane.showInputDialog("Nombre del videojuego"));
            v.setPeso(Double.parseDouble(JOptionPane.showInputDialog("Peso del juego")));
            v.setAño(Integer.parseInt(JOptionPane.showInputDialog("Año del juego")));
            seleccion = JOptionPane.showOptionDialog(null, "¿Es multijugador?",
                    null, JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE,
                    null, options, "Sí");
            if(seleccion == 0){
                v.setMultijugador(true);
            }else{
                v.setMultijugador(false);
            }
 
            v = new Videojuegos(v.getID(), v.getNombre(), v.getPeso(), v.getAño(), v.getMultijugador());
            vList.add(v);
    }
}
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

¿Hacer que el usuario rellene los atributos para crear un objeto?

Publicado por Juan Carlos (131 intervenciones) el 16/10/2017 23:45:57
Hola

Te explico lo que creo que ocurre viendo tu código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Videoconsola {
ArrayList<Videojuegos> vList;
 
// aquí defines la variable v, pero solo la defines, no creas el objeto
Videojuegos v;
 
public void Añadir(){
String[] options = {"Sí", "No"};
int seleccion;
 
JOptionPane.showMessageDialog(null, "Introduce los datos");
 
// Seguro que aquí obtienes el error, como solo la definiste, pero no creaste el objeto, v está
// "vacía", de ahí que te de el nullpoint
v.setID(Integer.parseInt(JOptionPane.showInputDialog("ID")));
...
 
// aquí sí estás creando el objeto
v = new Videojuegos(v.getID(), v.getNombre(), v.getPeso(), v.getAño(), v.getMultijugador());

Tienes que replantearte la forma de hacerlo, en la última línea, cuando realmente creas el objeto, es donde tienes que pasarle los parámetros. si no los quieres obtener del JOptionPane, puedes usar variables temporales en vez de usar v.setID(...) como haces ahora.

Un saludo
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

¿Hacer que el usuario rellene los atributos para crear un objeto?

Publicado por Jose (32 intervenciones) el 17/10/2017 01:10:22
Tenías razón. Muchas gracias :D
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
Revisar política de publicidad