带有布尔值的 Switch 语句不起作用?

新手上路,请多包涵

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

不兼容的类型:

必需: 布尔值

找到: 整数

在案例 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);

原文由 user2708074 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 748
1 个回答

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

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

请注意,这里没有 "I don't know!" 大小写。 boolean 类型可以有 truefalse 值。这是另一个原因,为什么 switch-case 不是 boolean 类型。没有默认情况。

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

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

原文由 Rohit Jain 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题