Получение исключения IndexOutOfBoundsException в моем коде PacMan

#indexoutofboundsexception

#исключение indexoutofboundsexception

Вопрос:

 public final class StudentAttackerController implements AttackerController {   public void init(Game game) { }   public void shutdown(Game game) { }   public int update(Game game, long timeDue) {   // generating Pair data structure to return both defender and Integer value   Pair lt;Defender , Integergt; result = nearestDefender(game, false);  Defender vulnerableDefender = result.first();  int vulnerableDefenderDistance = result.second();   result = nearestDefender(game, true);  Defender normalDefender = result.first();  int normalDefenderDistance = result.second();   // checking if there is a defender near me and if its not vulnerable   if(normalDefender != null amp;amp; (normalDefenderDistance lt;= vulnerableDefenderDistance amp;amp; normalDefenderDistance lt;= 6)){  return game.getAttacker().getNextDir(normalDefender.getLocation(), false);  }  // if above is false, then there is no threat OR is safe to chase vulnerable   else if(vulnerableDefender != null){   return game.getAttacker().getNextDir(vulnerableDefender.getLocation(), true);   }  else if (powerPillNear(game)){// if there is a power pill near the attacker, stay there   if(normalDefenderDistance lt;= 6){//if there is a defender in the way of the vulnerable one, flee instead of chasing  return eatPill(game);  }  return game.getAttacker().getReverse();  }  else if(normalDefenderDistance lt;= 6){   return game.getAttacker().getNextDir(normalDefender.getLocation(), false);  }  else return eatPill(game); //eat power pills   }    private int eatPill(Game game) {// sends the attacker to eat power pills and when there are none, eat regular pills   Node _nodePowerPill = game.getAttacker().getTargetNode(game.getPowerPillList(), true);  Node _nodePill = game.getAttacker().getTargetNode(game.getPillList(), true);   try {   return game.getAttacker().getNextDir(_nodePowerPill, true);  }  catch (NullPointerException e) {   return game.getAttacker().getNextDir(_nodePill, true);  }  }    private Pairlt;Defender,Integergt; nearestDefender(Game game, boolean bool) { // true for distance from defender to attacker and false for the opposite   Defender defender = null;  int tempInt = Integer.MAX_VALUE;   Node attackerLocation = game.getAttacker().getLocation();   if (bool) {//checking for the boolean that i passed in when i called the method in Update  for (int i = 0; i lt; 4; i  ) {  Defender temp = game.getDefenders().get(i);   if (tempInt gt; temp.getPathTo(attackerLocation).size() amp;amp; !temp.isVulnerable() amp;amp; temp.getLairTime() == 0 ) {  defender = temp;  tempInt = temp.getPathTo((attackerLocation)).size();  }  }  } else {// else for when i need the path from the attacker to the closest defender that is vulnerable   for (int i = 0; i lt; 4; i  ) {   Defender temp = game.getDefenders().get(i);   if (tempInt gt; attackerLocation.getPathDistance(temp.getLocation()) amp;amp; temp.isVulnerable()) {  defender = temp;  tempInt = attackerLocation.getPathDistance(temp.getLocation());   }  }  }  return new Pairlt;gt;(defender,tempInt); // return the pair, with the defender and the distance  }     private boolean powerPillNear(Game game) { // checking for a power pill near the attacker  Listlt;Nodegt; nodes = game.getAttacker().getLocation().getNeighbors();  for(int i = 0; i lt; nodes.size(); i   ) {  if (nodes.get(i) != null amp;amp; game.checkPowerPill(nodes.get(i))) {  return true;  }  }  return false;   }    }  

Код, по сути, делает уровни автоматической очистки PacMan. Всякий раз, когда я запускаю код, я получаю исключение IndexOutOfBoundsException в строке 49, иначе возвращаю eatPill(игра); и строку 56, узел _nodePowerPill = game.getAttacker().getTargetNode(game.getPowerPillList(), true);

Похоже, что проблемы возникают из-за употребления энергетических таблеток и таблеток, но я не понимаю, что не так с кодом. У меня нет проблем в IntelliJ, за исключением «Вызов метода» getLocation «может привести к» Исключению NullPointerException » в строке 47, и я не знаю, что это значит.