我想编写一个个人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。为什么不退出这个方法?
答案 0 :(得分:1)
您无法在空对象上调用.equals()
。
要检查vers
变量是否为空,您应该使用vers == null
答案 1 :(得分:1)
你在这里得到例外是正确的。 这里:
if(vers.equals(null)){
您正在尝试对null为null的变量调用方法。正如你自己所说的那样,vers在这一点上是空的。
要检查null,您必须使用==运算符。
if(vers == null) { return;}