为什么我的编译器告诉我:
不兼容类型:
必需:布尔值
找到:Int
在案例0下
例如:
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);
切换(isOn)
:切换布尔值
并希望用int
进行大小写,例如,case 0
!
根据JLS第14.11节:对于开关(表达式)开关块
:
表达式只能是char、byte、短期、int、Character、Byte、短期、整数、字符串或枚举类型
,否则会发生编译时错误。
根据规范,以下内容也必须正确:
case
常量表达式中的任何两个都不能具有相同的值
开关
标签为空
因此,开关表达式不能是float、double或布尔值。要回答为什么的问题:布尔值
true-false
与if-else
一起使用是有意义的,例如if(true)then do
。浮点数(float
,double
)对于开关来说不是一个好的选择,因为精确比较常常被舍入错误破坏。e、 g.0.11-0.1==0.01
为假。
只需将布尔值转换为1和0。
public void test(boolean isOn){
int trueOrFalse;
if(isOn == true){
trueOrFalse = 1;
}else{
trueOrFalse = 0;
}
switch (trueOrFalse){
case 1:
if (isOn){
System.out.println("its on");
}
break;
case 0:
if (!isOn){
System.out.println("its off");
}
break;
default:
System.out.println("I don't know!");
}
}
您正在打开boolean
type,您的案例正在使用int
类型。但是,即使您将案例更改为具有boolean
类型,这也行不通。您不能打开布尔类型。这没有任何意义,因为使用
if-else
无论如何都会更容易:
if (isOn) {
System.out.println("its on");
} else {
System.out.println("its off");
}
请注意,没有
“我不知道!”
案例在这里。
boolean
类型可以具有true
或false
值。这是另一个原因,switch case
不适用于boolean
类型。没有默认情况。
您还可以使用条件表达式将其压缩为单个语句:
public void test(boolean isOn) {
System.out.println(isOn ? "its on" : "its off");
}
今天我得到了一个关于代码的评论,考虑到我在学校作业中检查变量是真还是假的方式。 我编写的代码如下所示: 他们说这样写更好/更整洁: 例如,0和1不应该在该变量中。
是否可以编写如下JPQL查询: <代码>选择计数(*) 这将根据实体填充条件是否存在返回真/假布尔值? 我想这样使用查询: 我示例中的查询在语法上不正确(解析错误),但是是否有任何正确的方法可以像在JPQL中那样进行检查,从而返回布尔值,或者只有在Java代码中才有可能?
如何在SQL Select语句上返回布尔值? 我尝试了以下代码: 并且它只返回如果存在于表中。如果表中不存在UserID,我希望它返回。
我有一个问题,比较布尔值的if语句不起作用。最后一个if语句,其中notifFlag==true,如果我将它放在那里,它就不起作用了。日志显示notifFlag设置为true,但if语句未运行。但是,如果删除notifFlag==true,则if语句将运行。 带有标志得日志: 没有标志得日志:
在短 我想在thymeleaf中有一个switch语句,逻辑一旦写入多个case语句。 详细地 我想在thymeleaf中实现这一点 我当前的胸腺叶代码失败并出现运行时错误 但是上面的代码错误地失败了 注意:我知道出现上述错误消息的原因。我所需要的只是知道一种方法来实现单输出的多情况切换
问题内容: 我正在尝试编写一个从数据库获取表信息的查询,准备将其放入c#,稍后再导出为XML。我需要使用布尔值将其中一列命名为“IDENT”(以表示它是否是身份列)。 为此,我正在检查AUTOINC_SEED列是否为空,如下所示: 但是,对于非身份列将返回TRUE,对于身份列将返回FALSE!有什么办法可以反转select语句中的布尔值? 编辑:我知道我可以做一个case语句来解决这个特定的问题,