我正在制作一个简单的程序,让您添加比赛的结果以及他们用来完成的时间。所以进入的时候,我这样做:在Java中,如何检查输入是否是数字?
int time = Integer.parseInt(JOptionPane.showInputDialog("Enter seconds"));
所以我的问题是,我怎么能当他进入比正数以外的东西显示错误信息给用户?就像MessageDialog一样,直到你输入一个数字才会给你错误。
我正在制作一个简单的程序,让您添加比赛的结果以及他们用来完成的时间。所以进入的时候,我这样做:在Java中,如何检查输入是否是数字?
int time = Integer.parseInt(JOptionPane.showInputDialog("Enter seconds"));
所以我的问题是,我怎么能当他进入比正数以外的东西显示错误信息给用户?就像MessageDialog一样,直到你输入一个数字才会给你错误。
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.");
}
}
如果JOptionPane.showInputDialog("Enter seconds")
是不是有效的数字,你会得到NumberFormatException
。对于正数的检查,只检查time >=0
取决于你想如何解决它。 一个简单的方法是申报时间为整型,只是做:
Integer time;
while (time == null || time < 0) {
Ints.tryParse(JOptionPane.showInputDialog("Enter seconds"));
}
当然,这需要你使用谷歌番石榴。 (其中包含许多其他有用的功能)。
另一种方法是使用上面的代码,但使用标准tryparse,捕获NumberFormatException并在catch中不做任何事情。
有很多方法可以解决这个问题。
或不重新发明轮子,只是使用: NumberUtils.isNumber
或StringUtils.isNumeric
从Apache Commons Lang
。
的Integer.parseInt抛出NumberFormatException异常时参数的Integer.parseInt不是一个整数,使用尝试捕捉和显示所需的错误信息,保存在do while循环,如下
int time = -1;
do{
try{
time = Integer.parseInt(JOptionPane.showInputDialog("Enter seconds"));
}
catch(NumberFormatException e){
}
}while(time<=0);
@PradeepSimha你有问题。你使用正则表达式。现在你有两个问题。 – Doorknob
请添加更多标签。你在使用Swing吗? – gaborsch
如果它是一个整数秒,为用户提供一个带有'SpinnerNumberModel'的'JSpinner',如[本答案]所示(http://stackoverflow.com/questions/9344708/jcombobox-to-list-age/ 9345991#9345991)。 –