2017-09-27 65 views
0

我试图陷入用户输入正确的文件名,除非他按下取消或X.但是,如果他没有取消输入我的程序会抛出一个NullPointerException 。爪哇秋千:不能陷入用户输入正确的文件名

public void openSaveAsDirectory() { 

    JDialog dialog = new JDialog(); 
    dialog.setTitle("Save file as"); 
    String name = JOptionPane.showInputDialog(adTable, "Please type a name for your file"); 
    if(name != null && !name.isEmpty()) { 

     File fileName = new File(SAVE_LOCATION + FILE_SEPERATOR + name + FILE_SUFFIX); 
     book.saveUser(fileName); 

    } 

    while(name.isEmpty()) { 
      name = JOptionPane.showInputDialog(adTable, "Please type a name for your file"); 
    } 
} 
+1

那么,如果他们取消您的输入对话框,'name'将为空。你做'while(name.isEmpty()){'。 'name'可以为null。 – nbokmans

+2

可能的重复[什么是NullPointerException,以及如何解决它?](https://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it ) – nbokmans

+2

只是好奇:你为什么使用JOptionPane与JFileChooser? – ControlAltDel

回答

0

基于您的评论,这里是一个更新版本的输入,只要问,因为它是空的,但停止,当用户点击取消按钮。

String name; 
do { 
    name = JOptionPane.showInputDialog(null, "Please type a name for your file"); 
    if(name == null) { //user hit cancel, break the loop 
     break; 
    } 
} while(name.isEmpty()); 
+0

难道这不会永远陷入用户吗?因为虽然name == null只发生,如果用户按下取消或X,如果我没有错。但我希望用户能够取消输入。 – lucas6198

+0

正确的,那将永远问。你从来没有说过,当用户取消时,你希望它停止(尽管它非常有意义!)。 –

+0

@ lucas6198我根据您的需求更新了我的答案。 –