我正在尝试用Java创建一个太空入侵者类型的游戏,但无法理解为什么游戏无法运行。这是错误
java.lang.NullPointerException
at UFO_Game.checkForHit(UFO_Game.java:131)
at UFO_Game.setup(UFO_Game.java:109)
at UFO_Game.run(UFO_Game.java:44)
at acm.program.Program.runHook(Program.java)
at acm.program.Program.startRun(Program.java)
at acm.program.Program.start(Program.java)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
这是获取错误的代码。
public void checkForHit(){
GObject CHECK = getElementAt(Bullet.getX(), Bullet.getY());
if(CHECK == SHIP){
removeAll();
}
顺便说一下,我正在使用像斯坦福方法那样的ACM。
答案 0 :(得分:3)
我认为Bullet
是UFO_Game
课程中的一个字段。它没有被赋予有效值(对象字段用null
初始化)。当您尝试调用getX()
时,会抛出NullPointerException
。为避免这种情况,请在构造每个Bullet
对象时初始化UFO_Game
字段。
顺便说一句,Java中的方法和字段名称应以小写字母开头。任何熟悉Java的人都会将Bullet.getX()
读作静态(类)方法的调用。