NullPointerException durante l'utilizzo metodo put di HashMap
-
09-09-2019 - |
Domanda
Il codice seguente mi sta dando un NullPointerException
. Il problema è il seguente riga:
...
dataMap.put(nextLine[0], nextLine[6]);
Quello che è strano è che ho eseguito questo codice senza la linea di cui sopra e la chiamata a nextLine[0]
e lavorare nextLine[6]
esattamente come previsto - cioè mi danno indietro elementi di un file CSV. Dichiaro e inizializzare il HashMap
con il codice
HashMap<String, String> dataMap = null;
in precedenza nel metodo
String[] nextLine;
int counter=0;
while (counter<40) {
counter++;
System.out.println(counter);
nextLine = reader.readNext();
// nextLine[] is an array of values from the line
System.out.println(nextLine[0] + " - " + nextLine[6] +" - " + "etc...");
dataMap.put(nextLine[0], nextLine[6]);
}
return dataMap;
}
Soluzione
HashMap<String, String> dataMap = new HashMap<String,String>();
La variabile dataMap
non è inizializzata a questo punto. Si dovrebbe essere sempre un compilatore avvertimento circa questo.
Altri suggerimenti
Dove si Datamap inizializzato? E 'sempre nullo.
Per chiarire, si dichiara la variabile e impostarla a null. Ma è necessario creare un'istanza di una nuova mappa, che si tratti di un HashMap o simili.
per es.
datamap = new HashMap();
(lasciando da parte dei farmaci generici, ecc.)
Datamap viene dichiarata ma non inizializzata. Può essere inizializzato con
Datamap = new HashMap ();
Bene, ci sono tre oggetti accessibili su quella linea. Se nextLine [0] e nextLine [6] non sono nulli, perché la chiamata println sopra funzionato, che lascia Datamap. Hai fatto Datamap = new HashMap (); somwehere?
Ehm, che cosa esattamente do che ci si aspetta quando si esegue questa operazione?
HashMap<String, String> dataMap = null;
...
dataMap.put(...)