我试图通过DFS解决迷宫,使用adj List来表示图的顶点和边。共有12个节点(3行[A,B,C] * 4 cols [0,..,3])。我的程序首先保存所有顶点标签(A0,.. C3),然后检查相邻节点,如果可以移动,也没有问题,它会继续创建边缘,在这里它会出现错误。ArrayList <String> NullPointerException
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
}
...
}
我真的appreaciate如果任何人都可以点我在正确的轨道改编职系,以什么它去错了...谢谢!
运行您应该做的是更改代码以使每行有一条语句。 adjList [i] .add(vList [j] .label);应该是 ArrayList alTmp = adjList [i]; WhateverType vTmp = vList [j]; String label = vTmp.label; alTmp.add(label); 然后看看你在调试器遇到问题的地方 –
2010-04-20 03:18:58