2016-01-26 97 views
0

所以我试图从RPG /生存型游戏中的玩家那里获得一个数字输入,使用showInputDialog来显示选项,提示用户输入一个数字。我的问题是,如果他们按cancel,我会得到一个致命错误。 这是我当前的代码:JOptionPane.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 = ""; 

任何人都可以帮忙吗?

回答

0

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

String typeReader = JOptionPane.showInputDialog(options); 

如果用户点击 “取消”,typeReadernull之后。 null不是一个对象,所以你不能打电话给isEmpty(),你会得到NullPointerException。相反,你应该检查null

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

你应该阅读Oracle tutorial on dialogs,也许也是Javadoc