我正在GridWorld中编写自定义Rock。但是,当我运行以下代码时:
for(int i = 0;i<7;i++){
Grid<Actor> g = getGrid();
Location l = getLocation();
int x = l.getCol();
int y = l.getRow();
switch(i){
case 0:
Location l1 = new Location(x-1,y-1);
Actor a = g.get(l1);
if((a.toString()).equals("Infectious Rock")){
}else if((a.toString()).equals("Infectious Bug")){
}else{
a.removeSelfFromGrid();
}
break;
(使用不同的变量和不同的坐标重复7次)
这是NPE:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at infectiousRock.act(infectiousRock.java:18)
有谁知道造成这种情况的原因是什么?
答案 0 :(得分:1)
首先,您必须检查调用g.get(1l)
时获得的Actor是否存在。有一个简单的解决方法,将当前的if语句更改为:
if(a != null) {
if((a.toString()).equals("Infectious Rock")){
}else if((a.toString()).equals("Infectious Bug")){
}else{
a.removeSelfFromGrid();
}
} else
break;
添加额外的!=null
检查应该可以解决问题,如果没有发表评论,我会尽力更新答案。