Java 使用Switch Case语句编写程序(使用字母ABCD not int)

Java 使用Switch Case语句编写程序(使用字母ABCD not int),java,string,switch-statement,conditional,Java,String,Switch Statement,Conditional,我的代码是用if/else语句编写的,它正在工作,但我在使用switch语句编写代码时遇到了一个问题,因为我的变量和符号中似乎存在问题 你能指出哪里出了问题并帮我改正吗 下面是我的源代码 import java.util.Scanner; import java.io.*; public class CourseCodeSWITCH { public static void main(String[] a) { Scanner in = new Scanner (S

我的代码是用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;
        }
    }
}

java7/8
中,可以定义
String
来比较
code
。在早期版本中,您可能需要使用
char
enum

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的标签。

您使用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
}

关于,
“…我的变量和符号中存在问题”
——请澄清“问题…”的含义?错误消息?它不编译吗?请帮助我们。首先A、B、C等显然应该是变量,但它们没有在任何地方定义。我猜您想使用字符串“A”、“B”等@Hovercraft它不编译,错误消息是-symbol:variable E location:class CourseCodeSWITCH 5errors@Axl如果他坚持只使用一个字母“A”也可以,这甚至可以用于Java6@Axl是的,我想使用string,因为如果我放置case1,错误“int无法转换为字符串”appears@LanguidSquid我明白了……我的问题是,我没有像字母E中的“E”那样,在信中附上“E””“这就是问题所在。谢谢,它现在正在工作。。。万分感谢!:)@Marged jcreator pro版本4.50谢谢您的解释。我的老师实际上还没有把每件事都解释清楚。。就好像,我在这门课上只得到了不到15%的分数,但他给了我们太多的硬件,所以我只能通过网络和你们学到更多。。很抱歉,我不能检查你的,因为另一个先进来,所以我能做的就是给你的投票,尽管我不得不说你解释得很好。。非常感谢。