Java If条件中的Null指针异常

Java If条件中的Null指针异常,java,nullpointerexception,Java,Nullpointerexception,为什么此语句给出java.lang.NullPointerException 是否有其他方法检查此问题?NullPointerExceptions(NPE)在调用方法或访问null对象的属性时发生 要检查nulls,您可以在尝试使用变量之前打印变量的值,或者使用调试器逐步检查程序,并在到达异常发生的行时检查变量的值 编辑: 关于你的评论 我需要检查p.getNumber()和ep.getNumber()在该语句中都返回null和get true 您现有的代码 Product p = d

为什么此语句给出
java.lang.NullPointerException

是否有其他方法检查此问题?

NullPointerException
s(NPE)在调用方法或访问
null
对象的属性时发生

要检查
null
s,您可以在尝试使用变量之前打印变量的值,或者使用调试器逐步检查程序,并在到达异常发生的行时检查变量的值

编辑:
关于你的评论

我需要检查p.getNumber()和ep.getNumber()在该语句中都返回null和get true

您现有的代码

     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

      }

他已经这样做了。因为你在那一行得到一个NPE,
p
本身是
null
,或者
ep
null
,或者两者都是。您应该检查设置了
p
ep
checkProduct()
checkexpensiveProduct()
方法,看看它们是否工作正常。

调用方法或访问
null
对象的属性时,会发生NullPointerException
异常(NPE)

要检查
null
s,您可以在尝试使用变量之前打印变量的值,或者使用调试器逐步检查程序,并在到达异常发生的行时检查变量的值

编辑:
关于你的评论

我需要检查p.getNumber()和ep.getNumber()在该语句中都返回null和get true

您现有的代码

     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

      }

他已经这样做了。因为你在那一行得到一个NPE,
p
本身是
null
,或者
ep
null
,或者两者都是。您应该检查设置了
p
ep
checkProduct()和
checkexpensiveProduct()
方法,看看它们是否工作正常。

此代码可以抛出NPE的唯一可能性是
pnumber
Integer
其中
checkProduct()
检查ExpensiveProduct()
预期
int
(或类似产品)


其他不重要的原因是
dao
p
null
(易于检查)。

此代码可以抛出NPE的唯一不重要的可能性是
pnumber
Integer
其中
checkProduct()
checkexpensiveProduct()
期望
int
(或类似)

其他琐碎的原因是
dao
p
null
(易于检查)。

这样试试:

if ((p.getNumber() == null)&&(ep.getNumber()==null) )
试着这样做:

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

哪一行给出了
NullPointerException
?确保
p
ep
不为空

哪一行给出了
NullPointerException
?确保
p
ep
不为空

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


dao.checkexpensiveProduct(pnumber)返回null

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



dao.checkexpensiveProduct(pnumber)
返回null

在调用
getNumber()
之前,请确保
p
ep
为非null。完全错误?+更多代码…在调用
getNumber()
之前,请确保
p
ep
非空。完全错误?+更多的代码…这总是错误的,我需要做其他部分也有任何想法这样做吗?如果它总是错误的,我想你有你的答案。修正p和ep。这总是错误的,我需要做其他部分,还有什么想法吗?如果它总是错误的,我想你有你的答案。修复p和ep。我需要检查它们是否返回null,并获取true和do else部分。如果其中一个对象为null,则不能像在代码中那样使用他的方法。检查方法
dao.checkProduct()
dao.checkexpensiveProduct()
以确保它们不会返回空对象。相反,它们可以返回不带任何属性的已安装对象。因此,您的意思是,如果两者都返回null,那么它将是NullPointerException?如果一个方法返回null,代码将抛出NullPointerException,因为您试图访问null对象中的方法。当您执行
p.getNumber()
时,如果
p
为null,您将得到一个NullPointerException。对于
pe
对象也是如此。我需要检查那些返回null的对象,并获取true和do else部分。如果其中一个对象为null,则不能像在代码中那样使用他的方法。检查方法
dao.checkProduct()
dao.checkexpensiveProduct()
以确保它们不会返回空对象。相反,它们可以返回不带任何属性的已安装对象。因此,您的意思是,如果两者都返回null,那么它将是NullPointerException?如果一个方法返回null,代码将抛出NullPointerException,因为您试图访问null对象中的方法。当您执行
p.getNumber()
时,如果
p
为null,您将得到一个NullPointerException。对于
pe
对象也是一样。我需要检查空值,并在该语句中得到true。我可以&&2吗?我不理解你的评论。你能重新措辞吗?我需要检查p.getNumber()和ep.getNumber()在我编辑的语句中都返回null和get true。在您的程序中,
p
ep
null
有意义吗?或者,如果出现问题,它们只会是
null
?我需要检查null,并在该语句中得到true,我可以&&那2个吗?我不理解你的评论。你能重新措辞吗?我需要检查p.getNumber()和ep.getNumber()在我编辑的语句中都返回null和get true。在您的程序中,将
p
ep
设置为是否有意义