1

我正在 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)

有谁知道是什么原因造成的?

4

1 回答 1

1

您首先必须检查您调用的 Actor 是否g.get(1l)存在。有一个简单的解决方法,将当前的 if 语句更改为:

if(a != null) {
    if((a.toString()).equals("Infectious Rock")){

    }else if((a.toString()).equals("Infectious Bug")){

    }else{
        a.removeSelfFromGrid();
    }
} else
    break;

添加额外的!=null检查应该可以解决问题,如果没有发表评论,我会尽力更新答案。

于 2014-03-17T01:16:08.630 回答