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