-1

Node クラスのオブジェクトの 2 次元配列があります。これは Node クラスです:

public class Node {
private boolean edge;
private int parent;

public Node() {
 edge = false;
    parent = 0;
}

public Node(boolean edge, int parent) {
    this.edge = edge;
    this.parent = parent;
}

public boolean isNode() {
    return edge;
}

public void setNode(boolean node) {
    this.edge = node;
}

public int getParent() {
    return parent;
}

public void setParent(int parent) {
    this.parent = parent;
}
}

そして、これは私の2次元配列です:

private Node[][] adjMatrix = new Node[x][y];

addEdge という名前のメソッドで、配列内の点 i,j にあるノードを true に設定しようとしています。

public void addEdge(int i, int j) {
        adjMatrix[i][j].setNode(true);
        adjMatrix[j][i].setNode(true);
}

ただし、この行で nullpointerexception が発生しており、修正方法がわかりません。

adjMatrix[i][j].setNode(true); 

しばらく探していたので、答えを見つけることができなかったのは簡単な答えだと思います。そのため、どんな助けでも大歓迎です。

どうもありがとう :)

4

2 に答える 2

1

Nodesリスト内でインスタンス化していません。

Node[][] adjMatrix = new Node[x][y];

上記のステートメントは、配列を初期化するだけで、その中の要素をインスタンス化しません。

for ループを使用して行列を処理する必要があり、各要素に対して次のことを行います。

adjMatrix[i][j] = new Node();

マトリックス要素を使用する前にこれを行う必要があります..

于 2012-10-17T16:22:33.223 に答える
0

配列は null に初期化されているため、Node のインスタンスを割り当てて配列を埋める必要があります。

于 2012-10-17T16:22:39.490 に答える