首页 > 解决方案 > 在 Java 中使用 switch 语句无法访问代码

问题描述

所以我正在构建一个电子邮件管理应用程序,虽然它正在使用 if 语句,但我正在尝试合并 switch 语句。我正在使用扫描仪提示用户选择他们来自哪个部门,同时构建与之关联的电子邮件。虽然当我试图返回 this.department 时,它说它无法访问。我觉得我错过了一些非常明显的东西。

// Ask for the department
private String setDepartment() {
    Scanner sc = new Scanner(System.in);
    int department;
    
    System.out.println("Select your department:\n1. Sales\n2.Accounting\n3.Development\n4.N/A");
    department = sc.nextInt();
    
    while (true) {
        switch (department) {
            case 1:
                this.department = "Sales";
                break;
            case 2:
                this.department = "Accounting";
                break;
            case 3:
                this.department = "Development";
                break;
            case 4:
                this.department = "";
                break;
            default:
                System.out.println("Please choose a valid option (1-4)");
                break;
        }
        sc.close();
    }
    return this.department; <-- Error: Unreachable code
}

标签: javaswitch-statementjava.util.scanner

解决方案


问题是您在 while()循环中的条件。它始终设置为 true所以while循环下面的代码永远不会被执行。尝试在while循环内有一个不同的条件,它以某个值终止。否则你需要将你想要返回的东西放在while循环中。

额外:也请把你sc.close();放在while循环之外,否则你不能在第一次while循环迭代后使用资源。所以关闭资源必须始终在最后完成。

解决方案1:

while(updatedTerminationCondition){//change the termination condition





}

解决方案2:

while(true){




//place your return value inside here but then loop will only run once  
}


推荐阅读