NullPointerException при использовании метода put HashMap
-
09-09-2019 - |
Вопрос
Следующий код дает мне NullPointerException
.Проблема в следующей строке:
...
dataMap.put(nextLine[0], nextLine[6]);
Странно то, что я запустил этот код без приведенной выше строки и вызова nextLine[0]
и nextLine[6]
работают точно так, как ожидалось - то есть они возвращают мне элементы CSV-файла.Я объявляю и инициализирую HashMap
с кодом
HashMap<String, String> dataMap = null;
ранее в методе
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;
}
Решение
HashMap<String, String> dataMap = new HashMap<String,String>();
Твой dataMap
переменная на данный момент не инициализирована.Вы должны получить предупреждение компилятора об этом.
Другие советы
Где инициализируется карта данных?Оно всегда равно нулю.
Чтобы внести ясность, вы объявляете переменную и присваиваете ей значение null.Но вам нужно создать экземпляр новой карты, будь то HashMap или что-то подобное.
например
datamap = new HashMap();
(оставляя в стороне дженерики и т.д.)
dataMap объявлен, но не инициализирован.Его можно инициализировать с помощью
карта данных = новый HashMap();
Итак, по этой линии есть три объекта, к которым осуществляется доступ.Если значения nextLine[0] и nextLine[6] не равны нулю, поскольку вышеописанный вызов println сработал, тогда остается dataMap.Вы сделали dataMap = new HashMap();где-нибудь?
Хм, что именно делать вы ожидаете, когда сделаете это?
HashMap<String, String> dataMap = null;
...
dataMap.put(...)