我该如何做,以便无论何时输入一个非整数值,它都会告诉用户输入一个整数值?Java - NetBeans



我正在编写一个非常简单的程序,要求用户输入年龄,然后它将计算入场费。到目前为止,一切都很好,但我想添加一个检入,这样如果用户输入的不是int值,它会要求他们输入一个int值。例如,如果他们输入一个字符。

下面是我的代码:
public class CalcChargeAge {
public static void main(String[] args) {       

int x;
double chargeA = 20;
double chargeB = 10;


System.out.println("Enter Users age to calculate charge for entry. ");
Scanner in = new Scanner(System.in);
x = in.nextInt();
if (x >= 18) {
System.out.println("Users age is " + x);
System.out.println("Please pay the charge for entry: £" + chargeA);
} else if (x >= 12) {
System.out.println("Users age is " + x);
System.out.println("Please pay the charge for entry: £" + chargeB);  
} else {
System.out.println("Users age is " + x);
System.out.println("User entry charge is free. Print admission ticket.");

}
}
}

您可以使用Scanner.hasNextInt()方法来检查输入是否是整数,我认为这比捕获异常要好得多。

对于完整的实现,您可以将所有内容包装在循环中,因此您可以这样做:

Scanner in = new Scanner(System.in);
while(in.hasNext()) {
if(in.hasNextInt()) {
int x = in.nextInt();
// Handle input
break;
}
else {
// Handle invalid input
in.next();
}
}

这样应该可以正常工作:

boolean isValid = false;
int validInput = 0;
while (!isValid) {
try {
validInput = scanner.nextInt();
isValid = true;
}
catch (Exception e) {
System.out.println("Please enter a valid integer.");
}
}
// ... code using validInput

一种方法(注意,它可能不是最好的,甚至不是最好的)是将x=in.nextInt();替换为

while(true) {
String input = in.next();
try {
x = Integer.parseInt(input);
break;
} catch (Exception e) {
System.out.println("Please provide an integer!"); 
}
}

这将不会离开循环,直到用户提供一个整数值(邪恶!)

最新更新