Java 如何检查输入是否为整数并重复,直到收到有效输入
我有一个计算工资率的简单程序。我知道应该使用一个简单的while语句,但不确定如何最好地实现它。基本上,我可以反复询问工资率,直到收到一个整数 例如,如果用户输入“cat”,系统应显示一条警告消息,并继续打印该消息,直到收到一个整数 我所拥有的:Java 如何检查输入是否为整数并重复,直到收到有效输入,java,validation,Java,Validation,我有一个计算工资率的简单程序。我知道应该使用一个简单的while语句,但不确定如何最好地实现它。基本上,我可以反复询问工资率,直到收到一个整数 例如,如果用户输入“cat”,系统应显示一条警告消息,并继续打印该消息,直到收到一个整数 我所拥有的: System.out.println("Please enter your hourly pay rate"); if(user_input.hasNextInt()){ payment = user_input.nextInt
System.out.println("Please enter your hourly pay rate");
if(user_input.hasNextInt()){
payment = user_input.nextInt();
System.out.println("Your hourly pay rate is " + payment + " dollars p/h");
}
else{
System.out.println("Please enter a valid input");
}
正如@Luke Park提到的,你可以
while(!user_input.hasNextInt()){
System.out.println("Please enter a valid input");
}
payment = user_input.nextInt();
System.out.println("Your hourly pay rate is " + payment + " dollars p/h");
将do while循环与无限循环一起使用。找到int值后,中断循环。使用try catch处理其他输入的异常抛出
do {
System.out.println("Please enter your hourly pay rate");
String str = user_input.nextLine();
try {
payment = Integer.parseInt(str.trim());
if (payment <= 0) {
System.out.println("Please enter a valid input");
continue;
}
System.out.println("Your hourly pay rate is " + payment + " dollars p/h");
break;
}
catch (NumberFormatException e) {
System.out.println("Please enter a valid input");
}
} while (true);
这是我做的
boolean gotIn = false;
while (!gotIn) {
try {
System.out.print("Enter number ");
Scanner scan = new Scanner(System.in);
System.out.println(scan.nextInt());
scan.close();
gotIn = true;
} catch (RuntimeException nfe) {
System.err.println("Invalid input, Enter only numbers ");
}
}
但是每次创建一个新的扫描仪,@YoungHobbit solution是正确的。为什么
而(!user\u input.hasnetint())
是不可接受的?你测试过这个吗?对于任何一个错误的输入,它都会进入无限循环。我不这么认为。你能提供,你是如何运行它的。对我有效,我想知道这是否适用于负整数或0?@shellpottassium它适用于任何整数,请尝试一下。抱歉,措辞不正确。我是否也可以检查负整数/0作为输入(显然,因为它们也无效)。它可以工作,我尝试使用nextLine()
而不是nextLine()
:(
boolean gotIn = false;
while (!gotIn) {
try {
System.out.print("Enter number ");
Scanner scan = new Scanner(System.in);
System.out.println(scan.nextInt());
scan.close();
gotIn = true;
} catch (RuntimeException nfe) {
System.err.println("Invalid input, Enter only numbers ");
}
}