NullPointerException в методе - PullRequest
       13

NullPointerException в методе

0 голосов
/ 01 февраля 2012

У меня есть метод, который получает возвращает тип SENSOR. В жирном шрифте я получаю исключение NullPointerException, не могу понять, почему.

 public Sensor getSensorAt(int x,int y,GridMap grid)
      {
       /*go through sensor storage array 
       * for eachsensor index call the get x get y method for that 
       * compare it to the x,y of the robot 
       * 
       */  

        for(int i=0;i<s1.length;i++){ 
             if(s1[i].getX() == x){    <======= NullpointerException
            if(s1[i].getY()== y){ 

            return s1[i]; 
            } 
          }      
        } 
        return null;
      }

Ответы [ 2 ]

6 голосов
/ 01 февраля 2012

Вы не показали нам, где создается s1, но похоже, что s1 не содержит ничего для некоторого индекса i.

Я склонен писать циклы for такчтобы сделать подобный код немного чище

Object result = null;
for(int i=0;i<s1.length;i++){ 
    Object current = s1[i]; // Replace Object with whatever your array actually contains
    if(current.getX() == x && current.getY() == y) {
        result = current;
        break; // if you only need the first match
    }
}

return result;

Такие вещи, как форматирование, важны и, в первую очередь, помогут вам предотвратить ошибки и упростить их поиск, когда они произойдут ....

1 голос
/ 01 февраля 2012

Некоторые элементы в массиве s1 имеют значение null, и когда вы пытаетесь вызвать метод для этого нулевого объекта, вы получаете NPE. Надеюсь, это поможет вам.

...