Hola, soy nuevo desde hoy.
Estoy realizando un programa java mvc de 4 paquetes con las siguientes clases: Menu, Cine, EntradaTeclado, Genero, ListadoPeliculas, ListadoSalas, ListadoSesiones, Pelicula, Sala, Sesion, PeliculaDao, SalaDao, SesionDao y Controlador. Aunque para el programa falta mucho y todo lo demás lo sé estoy estancado creando una sesión para la cual debo asignar una fecha y una película, y además debe haber una sala anteriormente. Me marca nullpointer exception. El controlador solo inicia el menú. Os adjunto la clase SesionDao, donde estoy atascado, y la clase Sala y Cine.
A ver si alguien me echa una mano.
Método de ListadoPeliculas que falla
public Pelicula getPelicula(String titulo){
for(Pelicula pelicula:listadoPeliculas){
if(pelicula.getTitulo().equals(titulo)){
return pelicula;
}
}
return null;
}
Este método no es el que me preocupa. Me preocupa esto: cine.getListadoSalas().getSala(numSala).getListadoSesiones().addSesion(sesion);
En el constructor de Menu tengo:
public Menu(){
opcion=0;
et=new EntradaTeclado();
cine=new Cine();
peliculaDao=new PeliculaDao(cine);
salaDao=new SalaDao(cine);
sesionDao=new SesionDao(cine);
}
Un saludo a todos.
public class SesionDao {
private EntradaTeclado et;
private Cine cine;
private Sesion sesion;
private LocalDateTime horaSesion;
private Sala sala;
private Pelicula pelicula;
public SesionDao(Cine cine){
et=new EntradaTeclado();
this.cine=cine;
}
public LocalDateTime indicarSesion(){
System.out.print("Introduzca año: ");
et.pedirEntrada();
int anyo=Integer.parseInt(et.getEntrada());
System.out.print("Introduzca mes: ");
et.pedirEntrada();
int mes=Integer.parseInt(et.getEntrada());
System.out.print("Introduzca día: ");
et.pedirEntrada();
int dia=Integer.parseInt(et.getEntrada());
System.out.print("Introduzca hora: ");
et.pedirEntrada();
int hora=Integer.parseInt(et.getEntrada());
System.out.print("Introduzca minuto: ");
et.pedirEntrada();
int min=Integer.parseInt(et.getEntrada());
System.out.print("Introduzca segundo: ");
et.pedirEntrada();
int sec=Integer.parseInt(et.getEntrada());
horaSesion=LocalDateTime.of(anyo,mes,dia,hora,min,sec);
return horaSesion;
}
public void createSesion(){
System.out.println("CREAR NUEVA SESIÓN");
if(cine.getListadoSalas().isEmpty()==true){
System.out.println("No se puede crear una sesión");
}else{
try{
horaSesion=indicarSesion();
System.out.print("Introduzca el título de la película: ");
et.pedirEntrada();
String titulo=et.getEntrada();//utilizar toUpperCase()
//pelicula=new Pelicula();
//pelicula.setTitulo(titulo);
pelicula=cine.getListadoPeliculas().getPelicula(titulo);
System.out.println(cine.getListadoPeliculas().getPelicula(titulo).toString());//FALLA
System.out.print("Introduzca el número de sala: ");
et.pedirEntrada();
int numSala=Integer.parseInt(et.getEntrada());
//sala=new Sala();
//sala.setNumSala(numSala);
sala=cine.getListadoSalas().getSala(numSala);
System.out.println(sala.toString());
sesion=new Sesion(horaSesion,pelicula);
//opción 1
//sala.getListadoSesiones().addSesion(sesion);
//opción 2
//cine.getListadoSalas().getSala(numSala).getListadoSesiones().addSesion(sesion);
}catch(NumberFormatException e){
System.out.println("El string insertado no tiene el formato apropiado");
}
}
}
public void readSesion(){//sin acabar
System.out.println("\nVER SESIÓN");
horaSesion=indicarSesion();
//cine.getListadoSalas().getSala(numSala).mostrarInfoSala();
sesion=new Sesion(horaSesion);
//sesion=sala.getListadoSesiones().getSesion(horaSesion);
sesion.mostrarInfoSesion();
}
public void updateSesion(){
}
public void deleteSesion(){
}
}
public class Cine {
private String nombre,direccion;
private ListadoPeliculas listadoPeliculas;
private ListadoSalas listadoSalas;
public Cine(){
nombre="WINDSOR";
direccion="Trinidad 47";
listadoPeliculas=new ListadoPeliculas();
listadoSalas=new ListadoSalas();
}
public String getNombre() {
return nombre;
}
public String getDireccion() {
return direccion;
}
public ListadoPeliculas getListadoPeliculas() {
return listadoPeliculas;
}
public ListadoSalas getListadoSalas() {
return listadoSalas;
}
}
public class Sala {
private int numSala;
private int butacas;
private ListadoSesiones listadoSesiones;
public Sala() {
listadoSesiones = new ListadoSesiones();
numSala=0;
butacas=0;
}
public Sala(int numSala, int butacas) {
this.numSala = numSala;
this.butacas = butacas;
ListadoSesiones listadoSesiones;
}
public int getNumSala() {
return numSala;
}
public int getButacas() {
return butacas;
}
public ListadoSesiones getListadoSesiones() {
return listadoSesiones;
}
public void setNumSala(int numSala) {
this.numSala = numSala;
}
public void setButacas(int butacas) {
this.butacas = butacas;
}
@Override
public String toString(){
return "Número sala: "+numSala+", número butacas: "+butacas;
}
public void mostrarInfoSala(){
System.out.println("INFORMACIÓN DE LA SALA");
System.out.println("Id sala: <"+numSala+">\nNúmero de butacas: <"+butacas);
}
}
Hola otra vez.
Ya he conseguido resolverlo. Solo era un problema de escritura al repetir ListadoSesiones
listadoSesiones en constructor.
Un saludo