如果用户输入了错误的值,我希望程序的输出返回到问题。
这是为了我的作业。我尝试在 Youtube 和 Google 上搜索,但我无法识别我的错误,也没有显示我的错误是什么。
final int MINS_IN_AN_HOUR = 60;
final int AN_HOUR = 100;
final int LAST_MINUTE_OF_A_DAY = 2359;
int arrivalTime = 0;
int arrivalMins = 0;
Scanner input = new Scanner(System.in);
System.out.print("Please enter the vehicle's arrival time (24-hour format): ");
while(true){
arrivalTime = input.nextInt();
if(arrivalTime >= AN_HOUR && arrivalTime <= LAST_MINUTE_OF_A_DAY){
int hours = arrivalTime / AN_HOUR;
int minutes = arrivalTime - hours * AN_HOUR;
arrivalMins = hours * MINS_IN_AN_HOUR + minutes;
break; // If user was correct, exit program
}
else{
System.out.println("Please enter a valid number or enter a valid time");
System.out.print("Please enter the vehicle's arrival time (24-hour format): ");
}
}
预期的输出必须是 else 语句并重复循环。
代码中的问题不是您的条件,问题是您正在使用 nextInt()
读取用户输入,而不会在用户输入不是 int 的情况下捕获异常。
只需替换此行:
arrivalTime = input.nextInt();
试一试...捕获块
try {
arrivalTime = input.nextInt();
} catch(InputMismatchException e) {
arrivalTime = -1; // will trigger your else status
}