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(或类似)。

其他微不足道的原因是daop正在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

NullPointerExceptions (NPE) 当你调用一个方法或访问一个null对象的属性时发生。

要检查nulls,您可以在尝试使用变量之前打印变量的值,或者使用调试器单步执行程序并检查当您到达发生异常的行时变量的值是什么。

编辑:
关于你的评论

我需要检查 p.getNumber() 和 ep.getNumber() 都返回 null 并在该语句上获取 ture

您现有的代码

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

已经在这样做了。由于您在那条线上获得了 NPE,因此p它本身 isnullepisnull或两者兼而有之。您应该检查您的checkProduct()checkexpensiveProduct()方法,在哪里设置pep设置,以查看它们是否正常工作。

于 2012-10-21T17:04:08.213 回答
1

检查你的 p 变量和 ep 变量。其中一个是 null。检查为什么

 dao.checkProduct(pnumber)  

或者

dao.checkexpensiveProduct(pnumber);正在返回 null

于 2012-10-21T17:06:00.710 回答
0

什么线是给的NullPointerException?确保它pep不为空。

于 2012-10-21T17:04:53.107 回答