使用 Switch Case 语句编写程序(使用字母 ABCD 而不是 int)

Writing a program using Switch Case Statement (with the use of letters ABCD not int)

我的代码是用 if/else 语句编写的,它正在运行,但我在使用 switch 语句编写它时遇到问题,因为我的变量和符号中似乎存在问题。

能否请您指出错误并帮我改正?

下面是我的源代码。

import java.util.Scanner;
import java.io.*;

public class CourseCodeSWITCH {

    public static void main(String[] a) {

        Scanner in = new Scanner (System.in);
        String code;
        System.out.print("Enter Course Code: ");
        code = in.nextLine();
        switch (code) {
            case A: code = "Accounting";
                    break;
            case B: code = "Banking and Finance";
                    break;
            case C: code = "Computer Science";
                    break;
            case D: code = "Dentistry";
                    break;
            case E: code = "Engineering";
                    break;
        default:
                System.out.println("Invalid Course Code");
                break;
        }
    }
}

Java 7/8 中,您可以定义 String 来与 code 进行比较。在早期版本中,您可能希望使用 charenum.

public static void main(String[] a) {

    Scanner in = new Scanner (System.in);
    String code;
    System.out.print("Enter Course Code: ");
    code = in.nextLine();
    switch (code) {
        case "A": 
             code = "Accounting";
                break;
        case "B": 
             code = "Banking and Finance";
                break;
        case "C": 
             code = "Computer Science";
                break;
        case "D": 
             code = "Dentistry";
                break;
        case "E": 
             code = "Engineering";
                break;
    default:
            System.out.println("Invalid Course Code");
            break;
    }

此外,这里还有来自 Oracle 的 example

您使用 A、B、C 作为标签,但这不是 switch 语句的工作方式。让我们只看一个语句:

switch (code) {
    case A: code = "Accounting";
        break;

您正在打开 code...这意味着您将检查 code 变量的内容。

接下来,您申报案件。在上面的例子中,你实际上是在说

if (code == A)
    code = "Accounting";
    break;

现在,这有几个问题。首先,A 没有在任何地方定义,所以你会立即 运行 进入编译时错误。您可能想改用字符串值 ("A")。其次,您只是重新分配 code 而不是像您在原始 if 语句中那样输出。

您可能想要一个看起来更接近于以下内容的开关:

switch(code) {
    case "A":
        System.out.println("Assignment");
        break;
    case "B":
        System.out.println("Banking and Finance");
        break;
    // and so forth
}