我正在尝试使用挥杆动作制作“游戏”,但遇到了无法解决的问题。这可能很容易而且很明显,但是我仍然不知道。这是我的一段代码:

public class LevelOne {

private static Crate[] crates = new Crate[3];
public LevelOne(){
    crates[0].setX(200);
    crates[0].setY(200);
    crates[1].setX(280);
    crates[1].setY(40);
    crates[2].setX(440);
    crates[2].setY(40);

}
//more code here
}


我尝试创建LevelOne类的对象,以使我的crates变量生效。 (这是这样做的方法吗?)。

public static void main(String[] args) {
    LevelOne l = new LevelOne();

    JFrame frame = new JFrame("blabla");
    Board board = new Board();
    frame.add(board);
    frame.setSize(805, 830);
    frame.setVisible(true);
    frame.setFocusable(false);
    frame.setResizable(false);
    frame.setDefaultCloseOperation(3);
    frame.setLocation(400, 200);
    board.requestFocus(true);

}


它给了我NPE在线

LevelOne l = new LevelOne();


正如我所说,这只是一小部分项目,但我认为这可能会解决整个问题。我正在使用此Crate[]条板箱在板上绘制组件,以检查碰撞和其他东西。如果不创建LevelOne类的对象,尝试绘制它们时仍会得到NPE。有什么建议,想法,解决方案吗?

最佳答案

您忘记了初始化包装箱中的元素:

private static Crate[] crates = new Crate[3];

public LevelOne(){
    crates[0] = new Crate(); // <= add this
    crates[0].setX(200);
    crates[0].setY(200);
    // same for other elements

关于java - 创建类的新对象后获取NPE,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20593729/

10-10 02:55