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