2014-02-07 5 views
1

Я пишу обычную Rock in GridWorld. Однако, когда я запускаю следующий код:GridWorld Actor - Вызов toString() вызывает NPE

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(a != null) { 
    if((a.toString()).equals("Infectious Rock")){ 

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

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

Добавление дополнительного !=null чек должен сделать трюк, и если бы не оставить комментарий, и я сделаю все возможное, чтобы обновить ответ.

Смежные вопросы