Errore java.lang.NullPointerException

di il
2 risposte

Errore java.lang.NullPointerException

Salve a tutti, stavo creando un progetto java per esercitarmi ma non riesco a capire come risolvere l' errore che mi viene dato quando provo ad inserire i numeri di telefono nella lista (ultime righe), di seguito lascio il codice:

public static void main(String[] args) {
// TODO Auto-generated method stub
InputStreamReader input = new InputStreamReader(System.in);
BufferedReader tastiera = new BufferedReader(input);
String ruoloString = null;
String nomeUtente = null;
String cognomeUtente = null;
Date dataUtente = null;
Ruolo ruolo = null;
ArrayList<NumeroTelefono> lista_numeri = null;
ArrayList<Indirizzo> lista_indirizzi = null;
String numeroUtente=null;
int maxNumero=0;
NumeroTelefono numeroTel = null;

System.out.println("Inserire nome utente");
try {
nomeUtente = tastiera.readLine();
}
catch(Exception e) {}

System.out.println("Inserire cognome utente");
try {
cognomeUtente = tastiera.readLine();
}
catch(Exception e) {}

SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);
// per trasformare stringa in date
System.out.println("Inserire data nascita utente");
try {
String dataUtenteString = tastiera.readLine();
dataUtente = formatter.parse(dataUtenteString);
}
catch(Exception e) {}

System.out.println("Inserire ruolo utente");
try {
ruoloString = tastiera.readLine();
}
catch(Exception e) {}

switch(ruoloString) {
case "Amministratore":
ruolo.valueOf(ruoloString);
break;
case "Cliente":
ruolo.valueOf(ruoloString);
break;
case "Responsabile_magazzino":
ruolo.valueOf(ruoloString);
break;
case "Contabile":
ruolo.valueOf(ruoloString);
break;
case "Responsabile_catalogo":
ruolo.valueOf(ruoloString);
break;
}

System.out.println("Inserire quanti numeri utente si vuole inserire, max 3");
try {
String numeroMaxString = tastiera.readLine();
maxNumero = Integer.valueOf(numeroMaxString).intValue();
}
catch(Exception e) { System.out.println("Errore"); }

for(int i=0; i<maxNumero; i++){
System.out.println("Inserire numero utente");
try {
numeroUtente = tastiera.readLine();

}
catch(Exception e) {
System.out.println("Errore");
}

numeroTel.setNumero(numeroUtente);
lista_numeri.add(numeroTel);

}




}

2 Risposte

  • Re: Errore java.lang.NullPointerException

    
    Ruolo ruolo = null;
    ...
    ruolo.valueOf( ... );
    
    Non hai inizializzato la variabile ruolo da nessuna parte, però la stai usando.

    Alcune considerazioni:
    1) Il codice va postato all'interno degli appositi tag CODE, come ho fatto io.
    2) Quando viene sollevata un'eccezione, la JVM ti dice sempre anche in quale sorgente e a quale riga è stata sollevata.
    3) Quando viene sollevata una NullPointerException (abbreviato NPE) significa che in quel punto stai cercando di utilizzare un oggetto che è nullo.
  • Re: Errore java.lang.NullPointerException

    berny00 ha scritto:


    [CODE] switch(ruoloString) { case "Amministratore": ruolo.valueOf(ruoloString); break; case "Cliente": ruolo.valueOf(ruoloString); break; case "Responsabile_magazzino": ruolo.valueOf(ruoloString); break; case "Contabile": ruolo.valueOf(ruoloString); break; case "Responsabile_catalogo": ruolo.valueOf(ruoloString); break; }
    Questo che hai scritto e che ho quotato comunque è molto "brutto" (oltre che ripetitivo). Se usi delle enum e hai stringhe da cui ricavare l'oggetto della enum-constant, la prima cosa da vedere è se le stringhe possono corrispondere esattamente ai nomi delle enum-constant.

    Le enum-constant dovrebbero essere dichiarate seguendo le regole generali delle costanti: tutte in maiuscolo con l'underscore che separa le parole, ec. RESPONSABILE_MAGAZZINO.

    Se le stringhe possono corrispondere esattamente alle enum-constant, basta un solo valueOf che però, attenzione, può lanciare IllegalArgumentException. Se devi fare qualunque altra logica di match, es. confronto case-insensitive e/o restituzione di un default (es. null) se non c'è match e/o altro, allora conviene fare un metodo apposito di parsing .. e preferibilmente nella enum stessa.
Devi accedere o registrarti per scrivere nel forum
2 risposte