空指针将2d数组对象方法设置为true

时间:2012-10-17 16:20:43

标签: java arrays boolean multidimensional-array

我有一个2d数组,它是Node类的对象。这是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);
}

但是我在这一行得到了nullpointerexception,我不知道如何修复它。

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

我认为这是一个简单的答案,我无法找到答案,因为我一直在寻找。所以任何帮助都表示赞赏。

非常感谢:)

2 个答案:

答案 0 :(得分:1)

您尚未在列表中实例化Nodes

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

上述语句仅初始化您的数组,并且不会实例化其中的元素。

你需要使用for循环来修改矩阵,并为每个元素执行: -

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

在使用矩阵元素之前,您需要这样做..

答案 1 :(得分:0)

数组初始化为null,您必须分配Node的实例来填充数组。