【发布时间】:2013-11-23 16:56:40
【问题描述】:
Point bl = new Point(Guy.x, Guy.y + Guy.height);
Point br = new Point(Guy.x + Guy.width, Guy.y + Guy.height);
for(Tile p: platforms){
if (p.y == br.y && br.x >= p.x && bl.x <= p.x + p.width) {
isOnPlatform = true;
}else{
isOnPlatform = false;
}
}
当我运行那段代码时,控制台显示“NullPointerException”。为什么这不起作用?
我已经定义/初始化了变量Tile[] platforms。另外,当我运行它时,Guy 并没有掉下来。
另外,当我这样做时,它会起作用:
//for(Tile p: platforms){
if (platforms[1].y == br.y && br.x >= platforms[1].x && bl.x <= platforms[1].x + platforms[1].width) {
isOnPlatform = true;
}else{
isOnPlatform = false;
}
// }
但是,我还有另外 2 个 platforms,我会再添加 20 个。我不想对每个platforms 都这样做。
有什么想法吗?
【问题讨论】:
-
什么是“NullPointerException”...至少要努力一下。
-
NullPointerException 发生在哪里(行号)?您可以在堆栈跟踪中看到它。
-
检查您的平台[0] 元素
-
将鼠标悬停在您添加到问题中的 nullpointerexception 标签上。然后在出现的弹出窗口中单击“信息”。或者使用谷歌。
标签: java arrays foreach nullpointerexception collision-detection