如果输入不等于开关中的情况,如何让用户重新输入数据?

How to make a user re-input data if input does not equal a case in the switch?

我最近学习了 Java 并且我有一个 switch 语句从另一个 class 获取用户输入 我想知道如何使我的 switch 语句的 default case 让用户重新输入数据。

目前我有以下基本代码

static int getMonthInt(String monthName) 
{
    switch(monthName.trim()) 
    {
        case "January":
            return 1;
        case "Febuary":
            return 2;
        case "March":
            return 3;
        case "April":
            return 4;
        case "May":
            return 5;
        case "June":
            return 6;
        case "July":
            return 7;
        case "August":
            return 8;
        case "September":
            return 9;
        case "October":
            return 10;
        case "November":
            return 11;
        case "December":
            return 12;
        default:
            // what do i put here
    }
    
}

我从另一个 class 调用的输入 class 中获取用户输入,如下所示:

public static void main(String[] args) {

    String monthName;
    int dayNumber;
    int yearNumber;
    
    monthName = Input.getString("Please enter the current month name with a capital letter!");
    dayNumber = Input.getInt("Please enter the current day!");
    yearNumber = Input.getInt("Please enter the current year!"); }

一切正常。然而,我的问题是 如果有人输入无效输入,例如 'ovtomber' 我希望用户被重新提示输入数据。 我会把它放在默认情况下吗开关或主要方法(我获得用户输入的地方)以及我将如何执行此操作(我尝试了两种方法但无法获得预期的行为并且我找不到有关输入验证的任何主题)?

也许你可以 return 默认情况下为 0。

并且在主函数中

while(getMonthInt(String monthName) ==0){
/*get user input here*/
}

如果是默认的,那么它会让用户继续输入

在您的 switch 语句中,您有一个默认的 return 明显无效的月份(通常为 -1):

default:
    return -1;

那么按照你的逻辑,如果结果是-1,你可以要求澄清,例如:

int validatedMonth;
do
{
    monthName = Input.getString("Please enter the current month name with a capital letter!");
    validatedMonth = getMonthInt(monthName);
    if(validatedMonth == -1)
        System.out.println("Invalid month name, please try again");
} while (validatedMonth == -1);

(示例代码,我还没有检查编译)