0

グラフの頂点とエッジを表す adj List を使用して、DFS で迷路を解こうとしています。全部で 12 個のノードがあります (3 行 [A、B、C] * 4 列 [0、..、3])。私のプログラムは、すべての頂点ラベル(A0、..C3)を保存することから始めます。これまでのところ、問題はありません。次に、隣接するノードをチェックします。移動が可能であれば、エッジの作成に進みます。ここで、al が間違っています.

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

デバッガーを使用したところ、vList[j].labelnull ではなく、正しい文字列 (つまり、「B1」) が含まれていることがわかりました。null を示す唯一の変数は にある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
   }
   ...
}

誰かが間違っていることを正しい軌道に乗せることができれば、本当に感謝します...ありがとう!

4

2 に答える 2

3

配列を作成しましたが、オブジェクトを作成する必要がありArrayListます。書かれadjList[i]ているように、まだ何も割り当てられていないため、null を返します。

于 2010-04-20T03:14:46.377 に答える
1

コンテナを作成したことはわかりましたが、リストに要素を入力したことは確かですか? どちらかが ではないことを確認するために、 に追加assert((adjList[i] != null) && (adjList[j] != null))してみませんか。で実行addEdgenulljava -ea ...

于 2010-04-20T03:17:40.570 に答える