NullPointerException при использовании метода put HashMap - PullRequest
19 голосов
/ 09 апреля 2009

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

34 голосов
/ 09 апреля 2009
HashMap<String, String> dataMap = new HashMap<String,String>();

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

5 голосов
/ 09 апреля 2009

Где инициализируется карта данных? Это всегда ноль.

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

, например

datamap = new HashMap();

(оставляя в стороне дженерики и т. Д.)

3 голосов
/ 09 апреля 2009

dataMap объявлен, но не инициализирован. Может быть инициализирован с

datamap = new HashMap ();

1 голос
/ 09 апреля 2009

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

0 голосов
/ 09 апреля 2009

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

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