我正在尝试使用摇摆进行“游戏”,我遇到了一个我无法解决的问题。它可能是容易和明显的东西,但我仍然无法弄清楚。这是我的一段代码:
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。有什么建议,想法,解决方案吗?
答案 0 :(得分:3)
您忘了在包装箱中初始化元素:
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
答案 1 :(得分:1)
您必须将Crate
对象传播到crates
数组中。您收到NullPointerException,因为crates
数组中没有Carte
的任何引用。执行以下操作。
private static Crate[] crates = new Crate[3];
public LevelOne(){
for(int i = 0; i < crates.length; i++)
crates[i] = new Crate();
crates[0].setX(200);
crates[0].setY(200);
crates[1].setX(280);
crates[1].setY(40);
crates[2].setX(440);
crates[2].setY(40);
}