1
     Product p = dao.checkProduct(pnumber);
     ExpensiveProduct ep = dao.checkexpensiveProduct(pnumber);
     if ((p.getNumber() == null)&&(ep.getNumber()==null) ){ // java.lang.NullPointerException 
     //do something

     }else{
    //do something

      }

なぜこのステートメント java.lang.NullPointerException がこれをチェックする他の方法がありますか?

4

5 に答える 5

3

このコードがNPEをスローできる唯一の重要な可能性はpnumberIntegerどこにあるか、checkProduct()またはcheckexpensiveProduct()期待しているint(または同様の)ことです。

その他の些細な理由はdao、または存在しpていることnullです(確認が簡単です)。

于 2012-10-21T17:04:18.463 に答える
2

このようにしてみてください:

if ((p != null) && (p.getNumber() == null) && (ep != null) && (ep.getNumber()==null) ){
于 2012-10-21T17:04:33.057 に答える
1

NullPointerException■(NPE)は、メソッドを呼び出すか、nullオブジェクトのプロパティにアクセスするときに発生します。

sを確認するにnullは、変数を使用する前に変数の値を出力するか、デバッガーを使用してプログラムをステップ実行し、例外が発生する行に到達したときに変数の値を確認します。

編集:
あなたのコメントについて

p.getNumber()とep.getNumber()の両方がnullを返していることを確認し、そのステートメントを取得する必要があります

既存のコード

if ((p.getNumber() == null)&&(ep.getNumber()==null) )

すでにそれをやっています。その回線でNPEを取得しているので、pそれ自体は、、nullまたは、、あるいはその両方です。とメソッドを調べて、それらが正しく機能しているかどうかを確認する必要があります。epnullcheckProduct()checkexpensiveProduct()pep

于 2012-10-21T17:04:08.213 に答える
1

p変数とep変数を確認してください。そのうちの1つがnullです。理由を確認してください。

 dao.checkProduct(pnumber)  

また

dao.checkexpensiveProduct(pnumber);nullを返しています

于 2012-10-21T17:06:00.710 に答える
0

どの行が与えていNullPointerExceptionますか?pまたはepがnullでないことを確認してください。

于 2012-10-21T17:04:53.107 に答える