Switch 语句过早关闭

Switch statement prematurely closing

我目前正在为大学课程做一个项目,我遇到了 switch 语句过早结束的问题。我似乎无法弄清楚我做错了什么。

它应该接受用户的输入,如果不是其中一种情况,则重新启动 switch 语句。但是,一旦输入一个无效字符,switch 语句就会完全关闭并结束程序。

我目前已将其设置为在输入正确的情况下打印出每个代码,但是,

public static void companyClassificationCode() {
    char companyCode;

    System.out.print("Please enter your company classification code: ");
    companyCode = console.next().charAt(0);
    switch (companyCode) {
        case 'c':
        case 'C':
            System.out.println("C");
            companyCode = 'C';
            break;
        case 'l':
        case 'L':
            System.out.println("L");
            companyCode = 'L';
            break;
        case 'n':
        case 'N':
            System.out.println("N");
            companyCode = 'N';
            break;
        case 's':
        case 'S':
            System.out.println("S");
            companyCode = 'S';
            break;
        default:
            System.out.print("An invalid code has been entered. Please enter your company classification code: ");

    }
}

您可能希望将 switch 语句包装在一个循环中。 以下代码将循环直到输入有效代码;无效值将恢复为初始值(单个 space 字符)并重新启动循环。

    public static void companyClassificationCode() {
        char companyCode = ' ';

        while (companyCode == ' ') {
            System.out.print("Please enter your company classification code: ");
            companyCode = console.next().charAt(0);
            switch (companyCode) {
                case 'c':
                case 'C':
                    System.out.println("C");
                    companyCode = 'C';
                    break;
                case 'l':
                case 'L':
                    System.out.println("L");
                    companyCode = 'L';
                    break;
                case 'n':
                case 'N':
                    System.out.println("N");
                    companyCode = 'N';
                    break;
                case 's':
                case 'S':
                    System.out.println("S");
                    companyCode = 'S';
                    break;
                default:
                    System.out.print("An invalid code has been entered. Please enter your company classification code: ");
                    companyCode = ' ';
            }
        }
    }