Актер GridWorld — вызов toString() вызывает NPE

Я пишу пользовательский рок в GridWorld. Однако когда я запускаю следующий код:

    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 раз с разными переменными и разными координатами)

Вот НЭП:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at infectiousRock.act(infectiousRock.java:18)

Кто-нибудь знает, что вызывает это?


person brucelong    schedule 07.02.2014    source источник


Ответы (1)


Сначала вы должны проверить, существует ли Актер, которого вы получаете от вызова 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 должно помочь, а если нет, оставьте комментарий, и я сделаю все возможное, чтобы обновить ответ.

person user2837058    schedule 17.03.2014