【问题标题】:Writing a program using Switch Case Statement (with the use of letters ABCD not int)使用 Switch Case 语句编写程序(使用字母 ABCD 而不是 int)
【发布时间】:2015-12-05 22:56:31
【问题描述】:

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

【问题讨论】:

  • 关于,"... there are problems in my variables and symbols" -- 请澄清您所说的“问题......”是什么意思?错误信息?它不编译吗?请帮助我们。
  • 第一个 A、B、C 等显然应该是变量,但它们没有在任何地方定义。我猜你想使用字符串“A”、“B”等。
  • @Hovercraft 它没有编译并且错误信息是这样的 - 符号:变量 E 位置:类 CourseCodeSWITCH 5 错误
  • @Axl 如果他坚持只使用一个字母“A”也可以,这甚至适用于 Java 6
  • @Axl 是的,我想使用字符串,因为如果我输入案例 1,则会出现错误“int 无法转换为字符串”

标签: java string switch-statement conditional


【解决方案1】:

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

【讨论】:

  • @LanguidSquid 我明白了......我的问题是,我没有像字母 E 中那样将字母用“”括起来是“E”。这就是问题所在。谢谢,它现在正在工作......万分感谢! :)
  • @Marged jcreator pro ver 4.50
【解决方案2】:

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

【讨论】:

  • 感谢您的解释。我的老师实际上并没有清楚地解释所有内容。就像,我在这门课上只得到了不到 15% 的分数,但他给了我们很多硬件,所以我只能通过网络学习更多你们……对不起,我无法检查你的,因为另一个人排在第一位,所以我能做的就是支持你的,尽管我不得不说你解释得很好……谢谢!
猜你喜欢
  • 2020-10-24
  • 2011-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-03
  • 2020-10-14
  • 1970-01-01
相关资源
最近更新 更多