0

私は2Dリンクリスト配列を次のようにしようとしています:

private LinkedList<Integer>[] adjLst;

graph(int n){
    noOfNodes = n-1;

    for(int i=0;i<=noOfNodes;i++){
        adjLst[i] = new LinkedList<Integer>();
    }
}

しかし、メインクラスから次のように呼び出している場合:

graph g =new graph(13);

NullPointerException をスローしていますか?

4

1 に答える 1

8

を初期化したことがないadjLstため、デフォルト値の のままですnull。次のようなものが必要です:

adjLst = new LinkedList<Integer>[noOfNodes + 1];
for (int i = 0; i <= noOfNodes; i++) {
    adjLst[i] = new LinkedList<Integer>();
}

なぜあなたが1を引いてからnその値を上げてその値を含めているのかは明らかではありません. これは理解しやすいと思います:

// Note: fixed case of class. Please follow Java naming conventions
Graph(int n){
    adjLst = new LinkedList<Integer>[n];
    for (int i = 0; i < n; i++) {
        adjLst[i] = new LinkedList<Integer>();
    }
}
于 2013-07-29T22:32:13.067 に答える