ArrayList <String>NullPointerException - PullRequest
       18

ArrayList <String>NullPointerException

0 голосов
/ 20 апреля 2010

Я пытаюсь решить лабиринт с помощью DFS, используя прилагательный список для представления вершин и ребер графа. Всего 12 узлов (3 строки [A, B, C] * 4 столбца [0, .., 3]). Моя программа начинается с сохранения всех меток вершин (A0, .. C3), пока что все хорошо, затем проверяет смежные узлы, также без проблем, если движение возможно, оно продолжает создавать край, здесь его, где все идет не так, как надо .

   adjList[i].add(vList[j].label);

Я использовал отладчик и обнаружил, что vList[j].label не равно нулю, он содержит правильную строку (т. Е. "B1"). Единственные переменные, которые показывают нуль, находятся в adjList[i], что заставляет меня полагать, что я реализовал это неправильно. Вот как я это сделал.

public class GraphList {
   private ArrayList<String>[] adjList;
   ...
   public GraphList(int vertexcount) {
      adjList = (ArrayList<String>[]) new ArrayList[vertexCount];
      ...
   }
   ...
   public void addEdge(int i, int j) {  
      adjList[i].add(vList[j].label);    //NULLPOINTEREXCEPTION HERE
   }
   ...
}

Я буду очень признателен, если кто-нибудь сможет направить меня на правильный путь, понизив, что происходит не так ... Спасибо!

Ответы [ 2 ]

3 голосов
/ 20 апреля 2010

Вы создали массив, но вам все еще нужно пройти и создать объекты ArrayList. Как написано, adjList[i] возвращает ноль, потому что ему еще ничего не назначено.

1 голос
/ 20 апреля 2010

Я вижу, что вы создали контейнер, но вы уверены, что заполнили список элементами? Почему бы вам не добавить assert((adjList[i] != null) && (adjList[j] != null)) к addEdge только для того, чтобы убедиться, что ни один из них не null. Запустить с java -ea ...

...