2012-02-01 17 views
0

型を返すメソッドがあります。センサ 太字では、実行時のNullPointerExceptionを取得していますが、その理由を理解できません。 s1が作成される場所メソッド内の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; 
     } 
+1

何かが 'null 'なのでしかし、あなたが私たちを見せてくれなかったので、何を言うのも不可能です。 's1'がどのように宣言され、初期化されたかなど。 –

+0

s1 [i]はnullです。それが期待された場所に作成されなかった理由を調べます。 –

答えて

6

あなたは私たちを示さなかったが、それはいくつかの指標iのためにそれには何も持っていませんs1のように見えます。

私はこのようなコードを作成するので、様ループのための私を書く傾向にあるフォーマットのようなクリーナー

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; 

物事が重要であり、あなたが最初の場所でバグを防ぐのに役立ち、そして見つけるためにそれらが容易になりますビットそれらが起こるとき....

+0

ありがとう! – Mjall2

+0

@ Mjall2、それは素晴らしいですが、あなたのコードの書式設定と明確さに取り組むべきです... – hvgotcodes

1

配列s1の要素のいくつかはnullであり、そのヌルオブジェクトでメソッドを呼び出そうとすると、NPEが取得されます。 あなたのお役に立てば幸いです。

関連する問題