-1

我有一个二维数组,它是 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;
}
}

这是我的二维数组:

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);
}

但是我在这条线上得到了一个空指针异常,我不知道如何修复它。

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 回答