【问题标题】:"Constant expression required" on switch statements? [duplicate]switch语句上的“需要常量表达式”? [复制]
【发布时间】:2019-04-20 05:09:28
【问题描述】:

我正在研究 switch 语句。 Java 编译器告诉我,我的案例 (x, y, z, a) 需要一个常量表达式;这是从哪里来的,为什么我的代码不能运行 switch 语句?

public class JavaPractice {
    public static void main ( String[] args ) {

        System.out.println("What's your happinessLevel? From 0 - 10");
        int _userHappinessLevel = IO.readInt();

        if ( _userHappinessLevel < 0 ) {
            x = _userHappinessLevel;
        } else if ( _userHappinessLevel <= 3) {
            y = _userHappinessLevel;
        } else if ( _userHappinessLevel > 3 && _userHappinessLevel <= 6 ) {
            z = _userHappinessLevel;
        } else if ( _userHappinessLevel > 6 && _userHappinessLevel <= 10) {
            a = _userHappinessLevel;
        } else {
            b = _userHappinessLevel;
        }


        switch (_userHappinessLevel) {

            case x:
                IO.reportBadInput();
                break;
            case y:
                System.out.println("Hope you feel better");
                break;
            case z:
                System.out.println("You're getting there");
                break;
            case a:
                System.out.println(":)");
                break;
            default:
                IO.reportBadInput();
                break;
            }

    }
}

【问题讨论】:

  • 您的代码没有任何意义......您的第一组if(s) 保证标签必须等于_userHappinessLevel

标签: java switch-statement


【解决方案1】:

因为 _userHappinessLevel 的数据类型是 int,当你把这个变量放在 switch 中时,大小写应该是数字,或者你可以使用 enum 来做一些事情,比如给字符串一个“int”名称。

【讨论】:

    猜你喜欢
    • 2023-01-16
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    • 2015-11-02
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多