2016-08-21 10 views
-4

私はjavaを初めて使用しています。次のコードのセグメンテーションがあり、実際にaddFish()メソッドでNull_Pointer_Exceptionが発生しています。 理由は何でしょうか?Java NuLL_Pointer_Exceptionを取得する方法

public boolean canAddFish(Fish theFish) 
{ 
    // System.out.println("Hi I am in CanAddFish Method "); 

    boolean temp = false; 
    if((theFish.getTemperature() == getTankTemperature())&&(theFish.getSalinity() == getTankSalinity())) 
    { 
     if(numberOfFish < 6) 
     { 
      if(numberOfFish == 0) 
      { 
       temp = true; 
      } 
      else 
      { 
       System.out.println("Number Of Fish : " + numberOfFish); 

       if((theFish.getTemperature() == fish[numberOfFish-1].getTemperature()) && (theFish.getSalinity() == fish[numberOfFish-1].getSalinity())&&(theFish.getSpecies() == fish[numberOfFish-1].getSpecies())) 
       { 
        temp = true; 
       } 
       else 
       { 
        temp = false; 
       } 
      } 
     } 
     else 
     { 
      temp = false; 
     } 
    } 
    else 
    { 
     temp = false; 
    } 
    return temp; 
} 


public boolean addFish(Fish theFish) 
{ 
    System.out.println("Number of fish in tank : " + numberOfFish); 

    boolean canAdd = canAddFish(theFish); 

    System.out.println("Value of numberOfFish canAdd method : "+ canAdd); 

    if(canAdd) 
    { 
     System.out.println(" Adding fish"); 
     fish[numberOfFish++] = theFish; 
     System.out.println("Fish Added"); 
     return true; 

    } 
    else 
    { 
     return false; 
    } 

} 
+0

テスタープログラム:\t public static void test2() \t { System.out.println( "テスト2"); Fish nemo1 = new Fish( "clownfish"、 'T'、 'S'); System.out.println( "Add Clownfish?" + myTank.addFish(nemo1)); } – Anny

+0

1)問題は、私たちが表示していないコードの可能性が最も高いです。 2)リンク先のQ&Aをお読みください。この種の問題を見つけて修正する方法の詳細な説明があります。 –

+0

Java 'NuLL_Pointer_Exception'のようなものはありません。エラーを引用すると正確です。 – EJP

答えて

0

addFishに渡されるパラメータtheFishはnullの可能性があります。 addFishというメソッドをチェックし、ヌル以外のFishオブジェクトを取得していることを確認してください。

+0

'魚'識別子はパラメータではありません。それは(おそらく)フィールドですが、私たちはその宣言を見ることはできません。 –

+0

@StephenC 'addFish'に渡されているものがnullであることを意味しました。私はこれをより明確にするために答えを更新しました。 – rohitvats

+0

私はテスタープログラムのハードコード入力を試みましたが、常に同じエラー – Anny

関連する問題