我正在寻找一些有关我的家庭作业的帮助。我希望用户输入数字字符串,然后将其转换为整数。但我想制作一个循环来检测用户是否输入了错误的值,例如“One Hundred”为“100”。
我在想的是做这样的事情:
do{
numStr = JOptionPane.showInputDialog("Please enter a year in numarical form:"
+ "\n(Ex. 1995):");
num = Integer.parseInt(numStr);
if(num!=Integer){
tryagainstr=JOptionPane.showInputDialog("Entered value is not acceptable."
+ "\nPress 1 to try again or Press 2 to exit.");
tryagain=Integer.parseInt(tryagainstr);
}
else{
*Rest of the code...*
}
}while (tryagain==1);
但我不知道如何定义“整数”值。我基本上希望它能看到它是否是一个数字,以防止它在用户输入错误的东西时崩溃。
答案 0 :(得分:5)
试试这个:
try{
Integer.valueOf(str);
} catch (NumberFormatException e) {
//not an integer
}
答案 1 :(得分:2)
尝试使用instanceof
,此方法可以帮助您检查多种类型
实施例
if (s instanceof String ){
// s is String
}else if(s instanceof Integer){
// s is Integer value
}
如果您只想检查整数和字符串,可以使用@NKukhar代码
try{
Integer.valueOf(str);
} catch (NumberFormatException e) {
//not an integer
}
答案 2 :(得分:1)
使用正则表达式验证字符串的格式,并仅接受其上的数值:
Pattern.matches("/^\d+$/", numStr)
如果matches
包含有效的数字序列,true
方法将返回numString
,但当然输入可能高于Integer
的容量。在这种情况下,您可以考虑切换为long
或BigInteger
类型。
答案 3 :(得分:1)
试试这个
int num;
String s = JOptionPane.showInputDialog("Enter a number please");
while(true)
{
if(s==null)
break; // if you press cancel it will exit
try {
num=Integer.parseInt(s);
break;
} catch(NumberFormatException ex)
{
s = JOptionPane.showInputDialog("Not a number , Try Again");
}
}