从JOptionPane获得良好的输入

时间:2015-04-21 23:42:44

标签: java

我试图让用户在JOptionPane中输入一个整数,并且需要一种方法来确保用户输入一个整数。我可以使用while循环,如果是这样,我该如何实现呢?

3 个答案:

答案 0 :(得分:1)

你可以这样做:

boolean taken = false;
int myInteger = 0;
while(!taken){
   String s = (String)JOptionPane.showInputDialog(this, "Your question", "Your window title", JOptionPane.PLAIN_MESSAGE, null, null, "");

   //Check if input is an integer
   try{
      myInteger = Integer.parseInt(s);
      taken = true;
   catch(NumberFormatException e){
      taken = false;
   }
}

答案 1 :(得分:0)

循环中的

:对MalFormedNumeberException使用try-catch语句 在尝试中使用JOptionPane来获取输入修剪使用来自Integer类的解析然后如果成功中断 在catch中:使用printStackTrace方法打印异常或显示消息,通知用户输入有效的数字格式

     while(true){
        try{
                 //here the JOptionPane input
                 //here the parseInt from Integer class
                 break;
            }catch(NumberFormatException e){
                 //JOptionPane with show message dialogue asking for valide input
            }
       }

答案 2 :(得分:0)

您可以通过多种方式实现此目标,我个人的偏好是控制用户可以输入的内容,例如,使用JSpinner ...

JPanel questionPanel = new JPanel();
questionPanel.add(new JLabel("Place enter a number:"));
JSpinner spinner = new JSpinner(new SpinnerNumberModel(0, 0, Integer.MAX_VALUE, 5));
questionPanel.add(spinner);
Integer result = null;
int exitValue = JOptionPane.OK_OPTION;
do {
    exitValue = JOptionPane.showConfirmDialog(null, questionPanel, "Guess", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
    result = (Integer) spinner.getValue();
} while (result == null && exitValue != JOptionPane.CANCEL_OPTION);