java - 带有 boolean 值的 Switch 语句不起作用?

标签 java boolean switch-statement

为什么我的编译器告诉我:

不兼容的类型:

必需: boolean 值

找到:Int

案例 0 和案例 1


例如:

    public void test(boolean isOn){
    switch (isOn){
        case 0:
            if (isOn){
                System.out.println("its on");
            }
            break;
        case 1:
            if (!isOn){
                System.out.println("its off");
            }
            break;
        default:
            System.out.println("I don't know!");
    }

驱动类:

Club me = new Club();
me.test(true);

最佳答案

您正在打开 boolean 类型,并且您的案例正在使用 int 类型。但是,即使您将案例更改为具有 boolean 类型,那也是行不通的。您不能打开 boolean 类型。这没有任何意义,因为无论如何使用 if-else 会更容易:

if (isOn) {
    System.out.println("its on");
} else {
    System.out.println("its off");
}

请注意,这里没有 “我不知道!” 的情况。 boolean 类型可以有 truefalse 值。这是另一个原因,为什么 switch-case 不适用于 boolean 类型。没有默认情况。

您还可以使用条件表达式将其压缩为单个语句:

public void test(boolean isOn) {
    System.out.println(isOn ? "its on" : "its off");
}

关于java - 带有 boolean 值的 Switch 语句不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19351236/

相关文章:

python - 为什么这个 Python boolean 比较返回一个三元组?

c++ - 是否可以在 gcc 中关闭对 "and"/"or" boolean 运算符使用的支持?

javascript - JavaScript switch 语句是线性的还是常数时间的?

java - 循环不会结束。我该如何让它退出?

java - 创建新的可打包对象的正确方法

java - 为什么 Boolean.class.newInstance() 抛出异常?

java - EventListenerList 中的这段代码在 Java Swing 中意味着什么?

java - 一个可以用Excel文件中声明的数据填充Java对象的库

Python - 函数返回值

java - 如何消除 switch case 或 if-else ?并执行以下操作?