Come mai java.lang.NullPointerException?

di il
31 risposte

31 Risposte - Pagina 3

  • Re: Come mai java.lang.NullPointerException?

    Questa è l'action performed della mia azione Aggiungi prodotto
    
    public void actionPerformed(ActionEvent e) {
            PannelloPrincipale pp = (PannelloPrincipale) this.applicazione.getVista().getSottoViste(Costanti.PANNELLO_PRINCIPALE);
            String stringaQuantita = pp.getTextQuantità();
            String codiceProdotto = (String) pp.getComboProdotti().getSelectedItem();
            String errori = convalidaDati(stringaQuantita, codiceProdotto);
            if (!errori.isEmpty()) {
                pp.finestraErrore("Si è verificato il seguente errore:",errori);
                return;
            }
            Supermercato supermercato = (Supermercato) this.applicazione.getModello().getBean(Costanti.SUPERMERCATO);
            Scontrino scontrino = (Scontrino) this.applicazione.getModello().getBean(Costanti.SCONTRINO);
            int quantita = Integer.parseInt(stringaQuantita);
            Prodotto prodotto = supermercato.getProdotto(codiceProdotto);
            ProdottoAcquistato prodottoAcquistato = new ProdottoAcquistato(prodotto, quantita);
            scontrino.aggiungiProdottoAcquistato(prodottoAcquistato);
            pp.aggiornaDatiScontrino();
            pp.mostraProdotti((List<ProdottoAcquistato>) prodottoAcquistato);
            pp.resettaCampi();
            }
    
        private String convalidaDati(String stringaQuantita, String codiceProdotto) {
            String errori = "";
            if (stringaQuantita.isEmpty()) {
                errori += "La quantità  è¨ obbligatoria\n";
            } else {
                try {
                    int quantita = Integer.parseInt(stringaQuantita);
                    if (quantita <= 0) {
                        errori += "La quantita' dev'essere un numero maggiore di zero\n";
                    }
                } catch (NumberFormatException ne) {
                    errori += "La quantita' dev'essere un numero intero\n";
                }
            }
            if (codiceProdotto.isEmpty()) {
                errori += "Il codice del prodotto e' obbligatorio\n";
            }
            return errori;
        }
    
    mi da un java.lang.NullPointerException su questa linea di codice:

    Scontrino scontrino = (Scontrino) this.applicazione.getModello().getBean(Costanti.SCONTRINO);

    Mentre ho fatto una nuova azioneNuovoScontrino e l'action performed è questa
    
    public void actionPerformed(ActionEvent e) {
    Scontrino scontrino = (Scontrino) this.applicazione.getModello.getBean(Costanti.SCONTRINO);
    Supermercato s = (Supermato) this.applicazione.getModello.getBean(Costanti.SUPERMERCATO)
     scontrino = new Scontrino(scontrino.getCodice(), scontrino.getData(), scontrino.getTotale(), s);
                    scontrino.setData(new GregorianCalendar());
                    pp.aggiornaDatiScontrino();
    }
    
    Ovviamente in questa azione il java.lang.NullPointerException me lo segnala qui

    scontrino = new Scontrino(scontrino.getCodice(), scontrino.getData(), scontrino.getTotale(), s);
  • Re: Come mai java.lang.NullPointerException?

    Il secondo NullPointerException
    scontrino = new Scontrino(scontrino.getCodice(), scontrino.getData(), scontrino.getTotale(), s);
    deriva dal fatto che
    Scontrino scontrino = (Scontrino) this.applicazione.getModello.getBean(Costanti.SCONTRINO);
    scontrino qui è null.

    subito dopo questa istruzione scrivi:
    if(scontrino==null) System.out.println("SCONTRINO E' NULL);
    Sono convinto che stamperà, appunto, "SCONTRINO E' NULL".

    Questo dipende dal fatto che getBean(Costanti.SCONTRINO) restituisce null;
    Se restituisce null, in mappaBean di modello non c'è nessuna coppia <Costanti.SCONTRINO, Scontrino> e quindi sta a te riempirla in qualche modo.
    Non c'è altro da aggiungere


    Il primo invece è un mistero.
    Se this.applicazione fosse null, l'errore dovrebbero restituirlo subitola riga
    PannelloPrincipale pp = (PannelloPrincipale) this.applicazione.getVista().getSottoViste(Costanti.PANNELLO_PRINCIPALE);
    come prima riga del metodo actionPerformed scrivi:
    if(this.applicazione==null) System.out.println("APPLICAZIONE E' NULL);
    Ma qui non credo che verrà stampato nulla.

    Inoltre la riga
    Scontrino scontrino = (Scontrino) this.applicazione.getModello().getBean(Costanti.SCONTRINO);
    Scrivila così:
    Modello modello=this.applicazione.getModello();
    Scontrino scontrino=(Scontrino)modello.getBean(Costanti.SCONTRINO);
    E' dimmi in quale riga hai l'errore.
Devi accedere o registrarti per scrivere nel forum
31 risposte