2016-01-26 2 views
0

Итак, я пытаюсь получить номер ввода от игрока в игре RPG/выживания, используя showInputDialog, чтобы представить параметры, предлагая пользователю ввести номер. Моя проблема в том, что я получаю фатальную ошибку, если они нажимают cancel. Это мой текущий код:JOptionPane.showInputDialog Изменение кнопки «канцлера»

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); 

Если пользователь нажимает кнопку "Отмена", typeReader будет null впоследствии. null не является объектом, поэтому вы не можете называть его isEmpty(), и вы получаете исключение NullPointerException. Вместо этого, вы должны проверить null:

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

Вы должны прочитать Oracle tutorial on dialogs и, возможно, также в Javadoc.