0

En el método agregar(), almaceno los datos en la posición que se indica. Una vez que trato de ejecutar el método mostrar() este me genera un error cuando trato de comparar la variable cedulaAUsar con la que esta almacenada en la posición que se indico en el método agregar(). Por qué sucede esto?

public void agregar() {
    int asiento = Integer.parseInt(JOptionPane.showInputDialog("Ingrese el asiento"));
    int fila = Integer.parseInt(JOptionPane.showInputDialog("Ingrese el fila"));
    int sala = Integer.parseInt(JOptionPane.showInputDialog("Ingrese la sala"));

    String cedula = JOptionPane.showInputDialog("Ingrese la cedula");
    String nombre = JOptionPane.showInputDialog("Ingrese el Nombre");
    String precio = JOptionPane.showInputDialog("Ingrese el precio");
    String formaPago = JOptionPane.showInputDialog("Ingrese la forma de pago");

    teatro[asiento - 1][fila - 1][sala - 1] = new InfoCliente(cedula, nombre, precio, formaPago);

}

public void mostrar() {
    String cedulaAUsar = JOptionPane.showInputDialog("Ingrese la cedula");
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 5; j++) {
            for (int k = 0; k < 20; k++) {
                if (teatro[i][j][k].getCedula().equals(cedulaAUsar)) {
                    System.out.println("Cedula " + teatro[i][j][k].getCedula());
                    System.out.println("nombre " + teatro[i][j][k].getNombre());
                    System.out.println("metodo " + teatro[i][j][k].getMetodo());
                    System.out.println("Precio " + teatro[i][j][k].getPrecio());
                }
            }
        }
    }
}
Pablo Lozano
  • 45,934
  • 7
  • 48
  • 87
NoOne
  • 1
  • 2
    A ver si adivino: `NullPointerException` – Pablo Lozano Mar 21 '18 at 15:54
  • 1
    @PabloLozano iba a pedir que pusiera la excepción, pero tiene toda la pinta de que será lo que dices – rencinas Mar 21 '18 at 15:55
  • Como lo soluciono? – NoOne Mar 21 '18 at 16:01
  • Para poder darte una respuesta precisa, sería conveniente que [editaras](https://es.stackoverflow.com/posts/149149/edit) tu pregunta y añadieras la excepción indicando en que linea te da el error. De todas formas tal vez esta pregunta:[¿Cuál es la solución a todos los errores NullPointerException presentes, pasados y futuros?](https://es.stackoverflow.com/questions/42977/cu%C3%A1l-es-la-soluci%C3%B3n-a-todos-los-errores-nullpointerexception-presentes-pasados) ya realizada en [es.so] te ayude con tu problema. – rencinas Mar 21 '18 at 16:02
  • @rencinas segun lo que entiendo, el error se genera porque las otras casillas del arreglo estan vacias pero no se que contiene la casilla vacia en un arreglo de objetos. En este caso, el error se genera en la linea: if (teatro[i][j][k].getCedula().equals(cedulaAUsar)) porque compara algo vacio con la cedulaAUsar. Este es el error que que me genera: Exception in thread "main" java.lang.NullPointerException at teatrov3.TeatroV3.mostrar(TeatroV3.java:28) at teatrov3.TeatroV3.main(TeatroV3.java:78) Java Result: 1 – NoOne Mar 21 '18 at 16:09
  • @NoOne tal como dices solo debes validar que no sea "vacio" es decir que no sea nulo el valor al cual estas accediendo. – bercklyn Carlosviza Mar 21 '18 at 16:11
  • @bercklynCarlosviza Como hago esto? He intentado usar el .isEmpty o compararlo con un "null" y nada me funciona. Trate con la sobrecarga del constructor y tampoco me dio resultado. No se como darle un valor diferente de null a una casilla vacia de un vector de objetos. – NoOne Mar 21 '18 at 16:17
  • @PabloLozano Si, es un nullPointerException pero no se que hacer para evitar este error. – NoOne Mar 21 '18 at 16:18

1 Answers1

0

Al parecer sólo tienes que validar que el elemento de teatro que no sea null:

if(teatro[i][j][k] != null && teatro[i][j][k].getCedula != null) {
   if (teatro[i][j][k].getCedula().equals(cedulaAUsar)) {
       ...
   }
}