JOptionPane.showInputDialog更改'cancel'按钮

时间:2016-01-26 09:07:30

标签: joptionpane

所以我试图从RPG /生存型游戏的玩家那里得到一个数字输入,使用showInputDialog来显示选项,提示用户输入一个数字。我的问题是,如果按cancel,我会收到致命错误。 这是我目前的代码:

    String typeReader;
        do{
            typeReader = JOptionPane.showInputDialog(options);
        }while(typeReader.isEmpty());
        if (typeReader.isEmpty())
            typeReader = "0";
        charType = Integer.parseInt(typeReader);

这是我得到的错误:

    Exception in thread "main" java.lang.NullPointerException
         at Game.main(Game.java:66)
    Java Result: 1
    BUILD SUCCESSFUL (total time: 14 seconds)

理想情况下,如果用户按下cancel,程序只会将其读作空字符串:

    typeReader = "";

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

好的,你似乎对此很新;-) 首先,你不需要循环。只需写下

String typeReader = JOptionPane.showInputDialog(options);

如果用户点击"取消",之后typeReader将为nullnull不是对象,因此您无法在其上调用isEmpty()并获得NullPointerException。相反,您应该检查null

if (typeReader != null) {
    ...
}

您应该阅读Oracle tutorial on dialogs,也可以阅读Javadoc