在Java中获取错误NullPointerException
我得到错误Java.lang.NullPointerException..我是Java初学者,请帮助我..我在Netbeans中运行此代码在Java中获取错误NullPointerException,java,Java,我得到错误Java.lang.NullPointerException..我是Java初学者,请帮助我..我在Netbeans中运行此代码 if ((cmbDate.getSelectedItem().equals("")) && (cmbMonth.getSelectedItem().equals("")) && (cmbYear.getSelectedItem().equals(""))) { JOptionPane.showMessa
if ((cmbDate.getSelectedItem().equals("")) && (cmbMonth.getSelectedItem().equals("")) && (cmbYear.getSelectedItem().equals(""))) {
JOptionPane.showMessageDialog( this, "Please select DOB","Error", JOptionPane.ERROR_MESSAGE);
return;
}
如果要使用eqauls测试静态内容和动态变量,请始终使用左侧的静态部分,如
"".equals(cmbDate.getSelectedItem())
它将在cmbDate.getSelectedItem()
为空的情况下进行救援
还假设对象也可以为null
if ((cmbDate == null || "".equals(cmbDate.getSelectedItem())) || (cmbMonth ==null || "".equals(cmbMonth.getSelectedItem())) || (cmbYear ==null ||"".equals(cmbYear.getSelectedItem()))) {
JOptionPane.showMessageDialog( this, "Please select DOB","Error", JOptionPane.ERROR_MESSAGE);
return;
}
请确保任何此控件返回空项,并验证控件本身
cmbDate.getSelectedItem()
cmbYear.getSelectedItem()
cmbYear.getSelectedItem()
并更改如下代码。如果您得到任何空值,我们将进行验证,但您的愿望输出将有所不同
if ((cmbDate.getSelectedItem() !=null && cmbDate.getSelectedItem().equals(""))
&& (cmbMonth.getSelectedItem() !=null &&cmbMonth.getSelectedItem().equals(""))
&& (cmbYear.getSelectedItem() !=null && cmbYear.getSelectedItem().equals(""))) {
JOptionPane.showMessageDialog( this, "Please select DOB","Error", JOptionPane.ERROR_MESSAGE);
return;
}
上述任何一项都可以为空。在对它们执行操作之前,您需要检查它们是否为null。您知道
NullPointerException
的意思吗?(你用谷歌搜索过吗?)如果是这样,那么——你知道哪个引用是空的吗?(您是否尝试添加调试语句或使用调试器?)检查cmbDate.getSelectedItem()、CMBMOUNT.getSelectedItem()和cmbYear.getSelectedItem()的返回值。通常,在对值为null的变量调用方法时会引发null指针异常。这可能是Java中最常见的错误。。。所以,请随意在谷歌上搜索它并学习一点。在您的问题中提供NPE的堆栈跟踪。我认为这不是一个很好的建议。如果cmbDate.getSelectedItem()
为空,则可能意味着存在错误(在这种情况下,您的建议将掩盖错误),或者应该将其视为空字符串(在这种情况下,您的建议将给出错误的结果)。它不起作用…………它没有检查空值string@RajSharma检查更新,假设您要检查或而不是和@ruakh,那么检查空值的首选方法是什么?使用断言?因为从逻辑上讲,它不应该为null-类似于assert cmbDate.getSelectedItem()!=null
@ArunPJohny:如果cmbDate.getSelectedItem()
不应该为null,那么我认为显式检查它没有什么意义:让NullPointerException
发生就行了。(如果您确实希望显式检查它,例如,为了提供更详细的错误消息,那么我建议编写类似以下内容的代码:If(cmbDate.getSelectedItem()==null)抛出新的NullPointerException(“cmbDate.getSelectedItem()”)
)它不起作用。。。。。。。。。。。。。。