如果输入错误值并在 Java 中给定的代码上返回 ELSE 语句,如何修复循环



如果用户输入了错误的值,我希望程序的输出返回到问题。

这是为了我的作业。我尝试在 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
}