我只是在玩Java。我试图迫使程序仅接受数字1和2。我相信我已经使用while循环成功完成了此操作(如果输入错误,请更正)。但是,如果用户输入字符串,我该如何打印一条错误语句。例如:“ abc”。
我的代码:
while (response != 1 && response != 2) {
System.out.println("Please enter 1 for Car or 2 for Van: ");
response = scan.nextInt();
}
if (response == 1) {
vehicleType = VehicleType.CAR;
while (numPassengerSeats < 4 || numPassengerSeats > 7) {
System.out.println("Please enter the number of Passengers: ");
numPassengerSeats = scan.nextInt();
}
} else {
vehicleType = VehicleType.VAN;
while (true) {
System.out.println("Please enter the last maintenance date (dd/mm/yyyy): ");
String formattedDate = scan.next();
lastMaintenanceDate = formatDate(formattedDate);
if (lastMaintenanceDate != null)
break;
}
}
答案 0 :(得分:0)
让我们来看看nextInt()
的{{3}}:
将输入的下一个标记扫描为int。对此的调用 nextInt()形式的方法的行为与 调用nextInt(radix),其中radix是此函数的默认基数 扫描器。
返回:从输入中扫描的整数
投掷:
InputMismatchException -如果下一个标记与Integer正则表达式不匹配或超出范围
NoSuchElementException-如果输入已用尽
IllegalStateException-如果此扫描仪已关闭
根据javadoc,如果用户输入InputMismatchException
而不是String
,则会抛出int
。因此,我们需要处理它。
答案 1 :(得分:-1)
我认为您尚未成功强制程序接受仅整数,因为通过使用java.util.Scanner.nextInt()
,用户仍然可以输入非整数,但是java.util.Scanner.nextInt()
只会引发异常。请参阅this,以了解可能引发的异常。
我已提出一种解决方案,以强制您的程序仅接受整数。只需遵循以下示例代码:
示例代码:
package main;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int response = 0;
Scanner scan = new Scanner(System.in);
while (response != 1 && response != 2) {
System.out.println("Please enter 1 for Car or 2 for Van: ");
try {
response = Integer.parseInt(scan.nextLine());
if (response != 1 && response != 2) {
System.out.println("Input is not in choices!");
}
} catch (NumberFormatException e) {
System.out.println("Input is invalid!");
}
}
scan.close();
}
}