我有一个 2d 数组,它是 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;
}
}
这是我的 2D 数组:
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);
我认为这是一个简单的答案,我一直无法找到答案,因为我一直在寻找一段时间。因此,任何帮助都值得赞赏。
非常感谢:)
您尚未在列表中实例化Nodes
。
Node[][] adjMatrix = new Node[x][y];
上面的语句只初始化你的数组,不实例化其中的元素。
您需要使用 for 循环对矩阵进行分层,并且对于每个元素执行:-
adjMatrix[i][j] = new Node();
您需要在使用矩阵元素之前执行此操作。
数组初始化为 null,您必须分配 Node 的实例来填充数组。