Java开关大小写布尔函数?
我正在做一些Java作业,我遇到了一个问题,其中有一个代码与将测试分数转换为字母分数有关,其中必须找到错误:Java开关大小写布尔函数?,java,switch-statement,boolean,case,Java,Switch Statement,Boolean,Case,我正在做一些Java作业,我遇到了一个问题,其中有一个代码与将测试分数转换为字母分数有关,其中必须找到错误: switch(score) { case (score > 90): grade = 'A'; break; etc... 我读过的所有地方,以及我在netbeans中尝试过的所有东西都说布尔函数是不允许的。错误是它应该只是一个if语句吗?与大小写关联的内容必须与开关中使用的表达式类型兼容 您在开关中使用int(可能),因此大小写必须是int值(或其他可转换为int的类型,例如c
switch(score)
{
case (score > 90):
grade = 'A';
break;
etc...
我读过的所有地方,以及我在netbeans中尝试过的所有东西都说布尔函数是不允许的。错误是它应该只是一个if语句吗?与
大小写关联的内容必须与开关中使用的表达式类型兼容
您在开关中使用int
(可能),因此大小写必须是int
值(或其他可转换为int
的类型,例如char
)。问题在于,您提供的布尔值
不能转换为int
,并且无论它是什么,都不是您想要的
各国确实:
给定switch语句,以下所有内容都必须为true或a
发生编译时错误:
与switch语句关联的每个case常量都必须
与switch语句的类型兼容的赋值
表达式(§5.2)
如果这两种类型不匹配,您不希望使用一个开关,而是使用一系列条件语句(If else If
),而不是。根据JLS,case语句的参数只能是int
,short
,byte
,char
,字符串
或枚举
文字或常量
因此,为了回答您的问题,给定的代码将不会编译,是的,它应该是一个if
语句。我不完全理解您的最后两句话,但您尝试执行的操作将无法使用开关。。。案例…
,如果
s,则使用。看起来您所读的是正确的。这就是你要找的确认书吗?是的,一连串的if/else if
似乎更合适。我想你不理解最后两句话,因为这是错误的一部分。这就是我想要确认的,布尔函数在开关情况下不起作用。谢谢你们的帮助和保证,我没有疯。