有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JAVA填充对象数组时的lang.NullPointerException

这里有些东西我遗漏了。通过这段代码,我得到一个java.lang.NullPointerException

public static void main(String[] args) {

    Board board = new Board();
    board.Initialise();

}


public class Board {

private Obj[][] tableau;

public void Board() {

    tableau = new Obj[8][8];    
}

public void Fill_Board() {

    tableau[0][0]= new Obj('B');
    }
}

但对于其他代码,我没有得到任何错误。我做错了什么,以及如何正确初始化这个对象数组

public class Board {

private Obj[][] tableau = new Obj[8][8];

public void Board() {

}

public void Fill_Board() {

    tableau[0][0]= new Obj('B');
    }
}

共 (2) 个答案

  1. # 1 楼答案

    Board()最终成为成员函数而不是构造函数,因此永远不会被调用。问题是void关键字,需要删除它:

    public Board() { /* removed the `void' */
        tableau = new Obj[8][8];    
    }
    
  2. # 2 楼答案

    当我运行这段代码(将Obj更改为实际的类)时,我没有收到任何错误,也许您可以提供一个更具体的示例,其中包含您尝试执行的主要方法

    如果你想创建一个构造函数,那么它需要与你的类同名,即Tab,并且没有返回类型

    所以你需要补充:

    public Tab() {
        // initialization code here
    }
    

    无论何时创建该类的新实例,您的构造函数都将运行。你想用它来初始化所有变量

    Tab t = new Tab(); // Constructor runs
    

    编辑:

    你是main方法使用类Board,但是你给了我们一个名为Tab的类。我可以假设你真的想要班级董事会,所以你应该在上面的例子中把所有Tab改成Board,如果这是你想要的