Исключение NullPointerException при использовании метода put HashMap

следующий код дает мне 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;
}

5 ответов


HashMap<String, String> dataMap = new HashMap<String,String>();

код dataMap переменная не инициализируется в данный момент. Вы должны получить предупреждение компилятора об этом.


где инициализируется datamap ? Он всегда нулевой.

уточнить, вы объявляете переменную и присвоить ей значение null. Но вам нужно создать экземпляр новой карты, будь то HashMap или аналогичный.

например

datamap = new HashMap();

(оставляя в стороне обобщения и т. д.)


dataMap объявлен, но не инициализирован. Его можно инициализировать с помощью

datamap = новый HashMap();


ну, на этой линии есть три объекта доступа. Если nextLine[0] и nextLine[6] не являются null, потому что вызов println выше работал, то это оставляет dataMap. Вы сделали dataMap = new HashMap (); somwehere?


Эм, что именно do вы ожидаете, когда вы делаете это?

HashMap<String, String> dataMap = null;
...
dataMap.put(...)