Вопрос

Следующий код дает мне 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(...)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top