在Java中获取错误NullPointerException

在Java中获取错误NullPointerException,java,Java,我得到错误Java.lang.NullPointerException..我是Java初学者,请帮助我..我在Netbeans中运行此代码 if ((cmbDate.getSelectedItem().equals("")) && (cmbMonth.getSelectedItem().equals("")) && (cmbYear.getSelectedItem().equals(""))) { JOptionPane.showMessa

我得到错误Java.lang.NullPointerException..我是Java初学者,请帮助我..我在Netbeans中运行此代码

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;
       }
  • CMB日期
  • 每月
  • CMB年

  • 上述任何一项都可以为空。在对它们执行操作之前,您需要检查它们是否为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()”)
    )它不起作用。。。。。。。。。。。。。。