“我在线程中遇到异常”;“主要”;每当我尝试在数组中存储新对象时,代码中都会出现java.lang.NullPointerException

“我在线程中遇到异常”;“主要”;每当我尝试在数组中存储新对象时,代码中都会出现java.lang.NullPointerException,java,exception,Java,Exception,我正在构建一个A*算法,假设首先将节点添加到网格[][](在我的例子中是cells[I][j])。所以我做的是运行一个循环,用节点填充2D数组,其中填充了x和y坐标。但当我尝试运行代码时,它会抛出此异常java.lang.NullPointerException,我知道当object==null时会发生此异常,但不知何故,我无法找出此问题背后的原因,以下是我的代码:- private Node[][] cells; private void fill(){ for(int i=0

我正在构建一个A*算法,假设首先将节点添加到网格[][](在我的例子中是cells[I][j])。所以我做的是运行一个循环,用节点填充2D数组,其中填充了x和y坐标。但当我尝试运行代码时,它会抛出此异常
java.lang.NullPointerException
,我知道当object==null时会发生此异常,但不知何故,我无法找出此问题背后的原因,以下是我的代码:-

 private Node[][] cells;

 private void fill(){

    for(int i=0;i<rows;i++){
        for(int j=0 ; j<cols;j++){
            cells[i][j] = new Node(i,j,rows,cols); //throws exception this 
                                                     line
        }
    }
}
专用节点[][]单元;
私人空间填充(){

对于(int i=0;i这是因为您没有初始化单元格数组。只需将其初始化为适当的大小,就不会有问题。例如:

cells = new Node[5][5];
如果您不知道数组的大小,请尝试
ArrayList

private ArrayList<ArrayList<Node>> nodes = new ArrayList<>();

for(int i=0;i<rows;i++){
       ArrayList<Node> n  = new ArrayList<>();
        for(int j=0 ; j<cols;j++){
           Node node =  new Node(i,j,rows,cols); //throws exception this 
                                                               line
           n.add(node )

        }
      nodes.add(n);
    }
private ArrayList nodes=new ArrayList();

对于(int i=0;iYes,您已经声明了
但没有指定数组的长度。请尝试
节点[][]单元格=新节点[row][cell];
@ScaryWombat是的,这就是问题所在,非常感谢:)实际上问题是数组没有初始化,这是由
新节点完成的…
(还必须为此指定大小)
cells=new Node[rows][cols];
preciselyoops,感谢它正在工作:)