尽管指定了NullPointerException

时间:2017-06-04 21:06:11

标签: java nullpointerexception

我想编写一个个人modloader for minecraft(创建文件,下载文件,排序文件等),第一个创建的窗口是一个JOptionPane,它要求一个版本(我不用java编码真的很长,我不要使用微调器,只需要一个“msg对话框”,要求提供版本)。代码是:

public JOptionPane version = new JOptionPane();
public String modversion;

public Version()
{
    showVersion();
}

public static void main(String[] args)
{

}

public void showVersion()
{
    //input = version
    String vers = version.showInputDialog("Welche Version soll modifiziert werden?");

    if (vers.equals(null)) {
            return;
    } else { 
        if(vers.equals("1.5.2") || vers.equals("1.6.2") || vers.equals("1.6.4") || vers.equals("1.7.2") || vers.equals("1.7.10") || vers.equals("1.8") || vers.equals("1.8.9") || vers.equals("1.9") || vers.equals("1.10.2") || vers.equals("1.11.2"))
        {

          //mod version is saved as String (title for the config list)

            modversion = vers;
            return;
        } else  {
           // with incompatible input the method will be repeated
            JOptionPane.showMessageDialog(null, "Diese Version wird leider nicht supportet");
            showVersion();
        }
    }
}

如果只按“确定”,输入将等于“空”:

if (vers.equals(null)) {
            return;
    }

但它没有退出该方法,它说NullPointerException。为什么不退出这个方法?

2 个答案:

答案 0 :(得分:1)

您无法在空对象上调用.equals()

要检查vers变量是否为空,您应该使用vers == null

答案 1 :(得分:1)

你在这里得到例外是正确的。 这里:

  

if(vers.equals(null)){

您正在尝试对null为null的变量调用方法。正如你自己所说的那样,vers在这一点上是空的。

要检查null,您必须使用==运算符。

if(vers == null) { return;}