The type of the Expression must be char, byte, short, int, Character, Byte, Short, Integer, String, or an enum type (§8.9), or a compile-time error occurs.
char g ='X';
int marks = 65;
switch(marks/10)
{
case 1:
case 2:
case 3:
case 4: g = 'F';
break;
case 5: g = 'E';
break;
case 6: g = 'D';
break;
case 7: g = 'C';
break;
case 8: g = 'B';
break;
case 9:
case 10: g = 'A';
break;
}
System.out.println(g);
int score = 95;
switch(score) {
..
case 79: System.out.println("value in 70-79 range"); break;
case 80:
..
case 85: System.out.println("value in 80-85 range"); break;
case 90:
case 91:
case 92:
case 93:
case 94:
case 95: System.out.println("value in 90-95 range"); break;
default: break;
}
8条答案
按热度按时间alen0pnh1#
你不能
来自jls-14.11
关系运算符(〈,〈=,〉,〉=)的结果是
boolean
,这是不允许的。以下所有条件必须为真,否则将发生编译时错误:
lc8prwob2#
如果需要使用switch本身,这可能会有所帮助,
是这样的
hl0ma9xz3#
不幸的是没有,尽管你可以通过将多个case语句分组而不使用
break
来使用case
fall(有点黑客),并在范围结束时实现代码:恕我直言,使用
if
更适合您的特定情况。o2rvlv0m4#
它永远不会工作。你应该首先了解
switch
是做什么的。它将执行与switch参数匹配的case下的语句。
在这种情况下,
score
是一个参数,它是95
,但score>=90
将始终评估为true
或false
,并且永远不会匹配整数。你应该使用
if
语句。Java也不允许在开关情况下使用
booleans
。oyt4ldly5#
简单否
您正在向
switch
传递一个int
值。因此case必须是int
值,其中转动
boolean
。您的病例是
if else
的良好候选病例pgx2nnw86#
docs for switch-case语句状态:
switch语句仅基于单个整数、枚举值或String对象测试表达式。
所以没有布尔值。这样做没有意义,因为你只有两个值:
true
或false。您可以编写一个方法来检查分数,然后返回
switch
可以处理的类型之一例如:
然后在交换机中使用它:
...或者你可以直接使用
if, else-if, else
!ih99xse17#
显然,这不可能作为一种语言结构。但是,为了好玩,我们可以自己实现它!
Switch
接受任何要打开的值,然后提供通过布尔条件(ifTrue
方法)或精确匹配(ifEquals
方法)进行匹配的功能。提供要打开的值只是后一个功能所需的。在建立条件之后,用户调用
getResult
来获得结果。例如,我们可以创建一个方法来告诉我们它对我们的分数的看法:
这个简单的测试:
打印输出:
nbewdwxp8#
如果关系运算符不起作用,则使它们起作用的唯一方法是擦除关系运算符并手动输入单词。
例如: