Java 爪哇语;foreach“;不工作…nullPointerException

Java 爪哇语;foreach“;不工作…nullPointerException,java,arrays,foreach,nullpointerexception,collision-detection,Java,Arrays,Foreach,Nullpointerexception,Collision Detection,但是,我还有另外两个平台,我会再增加20个。我不想对每个平台都这样做 有什么想法吗?foreach循环迭代所有元素(包括null),因此如果您的platforms数组的长度为10,并且里面只有2个元素,那么p.y将导致NPE(null指针异常),因为当index==2时p为null。您必须更改代码以避免在空元素上循环: //for(Tile p: platforms){ if (platforms[1].y == br.y && br.x >= platforms

但是,我还有另外两个
平台
,我会再增加20个。我不想对每个
平台都这样做


有什么想法吗?

foreach循环迭代所有元素(包括null),因此如果您的platforms数组的长度为10,并且里面只有2个元素,那么p.y将导致NPE(null指针异常),因为当index==2时p为null。您必须更改代码以避免在空元素上循环:

//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;
            }

 //  }
for(平铺:平台){
if(p==null){
continue;//或者break,以您的情况为准
}

如果(p.y==br.y&&br.x>=p.x&&bl.x什么是“NullPointerException”…至少要努力一点。NullPointerException发生在哪里(行号)?您可以在堆栈跟踪中看到它。检查平台[0]元素将鼠标悬停在添加到问题中的NullPointerException标记上。然后单击“信息”在出现的弹出窗口中。或者使用谷歌。
//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;
            }

 //  }
for (Tile p : platforms) {
  if (p == null) {
    continue; // or break, whatever is better in your case
  }
  if (p.y == br.y && br.x >= p.x && bl.x <= p.x + p.width) {
    // ...
  }
}