我正在创建一个简单的程序,可以让你添加一个比赛的结果,以及他们用完的秒数。所以为了输入时间,我做了这个:
int time = Integer.parseInt(JOptionPane.showInputDialog("Enter seconds"));
所以我的问题是,如果他输入的数字不是正数,我怎么能向用户显示错误信息?就像MessageDialog一样,在输入数字之前会给出错误。
答案 0 :(得分:11)
int time;
try {
time = Integer.parseInt(JOptionPane.showInputDialog("Enter seconds"));
} catch (NumberFormatException e) {
//error
}
Integer.parseInt
如果无法解析NumberFormatException
,则会抛出int
。
如果您只想在输入无效时重试,请将其包装在while
循环中,如下所示:
boolean valid = false;
while (!valid) {
int time;
try {
time = Integer.parseInt(JOptionPane.showInputDialog("Enter seconds"));
if (time >= 0) valid = true;
} catch (NumberFormatException e) {
//error
JOptionPane.showConfirmDialog("Error, not a number. Please try again.");
}
}
答案 1 :(得分:2)
Integer.parseInt当Integer.parseInt的参数不是整数时抛出NumberFormatException,使用try Catch并显示所需的错误消息,将其保存在do while循环中,如下所示
int time = -1;
do{
try{
time = Integer.parseInt(JOptionPane.showInputDialog("Enter seconds"));
}
catch(NumberFormatException e){
}
}while(time<=0);
答案 2 :(得分:1)
如果JOptionPane.showInputDialog("Enter seconds")
不是有效号码,您将获得NumberFormatException
。对于正数检查,只需检查time >=0
答案 3 :(得分:0)
取决于您希望如何解决它。 一种简单的方法是将时间声明为整数,然后执行:
Integer time;
while (time == null || time < 0) {
Ints.tryParse(JOptionPane.showInputDialog("Enter seconds"));
}
当然,这需要你使用谷歌番石榴。 (其中包含许多其他有用的功能)。
另一种方法是使用上面的代码,但使用标准的tryparse,捕获NumberFormatException并在catch中不执行任何操作。
有很多方法可以解决这个问题。
或者不重新发明轮子并使用:
来自NumberUtils.isNumber
的{{1}}或StringUtils.isNumeric
。