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

Вот NPE:

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

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

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

Другие вопросы по тегам