我试图让用户在JOptionPane中输入一个整数,并且需要一种方法来确保用户输入一个整数。我可以使用while循环,如果是这样,我该如何实现呢?
答案 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);