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
设置为是否有意义