Salve ragazzi, devo fare un progetto per un esame e ho un problema che non riesco proprio a capire il perché. Posto tutto e vi spiego:
Costruttore:
codice:public User(String nome, String username, String password, double saldo, ArrayList<Utilizzabile> cronologia){ this.nome = nome; this.username = username; this.password = password; this.saldo = saldo; this.cronologia = cronologia; carrello = new ArrayList<>(); } Metodo interessato: public double aggiungiAlCarrello(int ID){ double totale = 0; for(int i=0; i<Admin.catalogo.size(); i++){ if(Admin.catalogo.get(i) instanceof Viaggi){ Viaggi x = (Viaggi) Admin.catalogo.get(i); if(x.getID() == ID){ carrello.add(x); totale = totale+x.getPrezzo(); } } else if(Admin.catalogo.get(i) instanceof Ristoranti){ Ristoranti x = (Ristoranti) Admin.catalogo.get(i); if(x.getID() == ID){ carrello.add(x); totale = totale+x.getPrezzo(); } } else if(Admin.catalogo.get(i) instanceof Beni){ Beni x = (Beni) Admin.catalogo.get(i); if(x.getID() == ID){ carrello.add(x); totale = totale+x.getPrezzo(); } } else if(Admin.catalogo.get(i) instanceof PrestazioneOpera){ PrestazioneOpera x = (PrestazioneOpera) Admin.catalogo.get(i); if(x.getID() == ID){ carrello.add(x); totale = totale+x.getPrezzo(); } } } return totale; }
In pratica mi genera l'eccezione NullPointerException quando uso l'istruzione carrello.add(x), ma non capisco perché dato che carrello l'ho inizializzato nel costruttore!
Inoltre ho notato che non è problema dell'oggetto passato per parametro perché se inizializzo carrello all'interno del metodo funziona tutto perfettamente, però ovviamente il carrello viene ogni volta riscritto ad ogni aggiunta, data la continua inizializzazione ad ogni chiamata del metodo.
Ragazzi aiutatemi che non riesco ad andare avanti ed è urgente! Se devo postare altro fatemi sapere. Grazie!