使用switch语句检查变量是否大于某个数字的最佳方法是什么?或者你建议使用if-else?我找到了这样一个例子:
int i;
if(var1>var2) i = 1;
if(var1=var2 i = 0;
if(var1<var2) i = -1;
switch (i);
{
case -1:
do stuff;
break;
case 0:
do stuff;
break;
case 1:
do stuff;
break;
}
你能告诉新手在switch语句中使用“大于或等于”吗?
答案 0 :(得分:20)
不确定这是否是您所要求的,但您可以这样做:
int var1;
int var2;
int signum = Long.signum((long)var1 - var2);
switch(signum) {
case -1: break;
case 0: break;
case 1: break;
}
答案 1 :(得分:11)
我强烈推荐if(var1>var2){}else if (var1==var2) {} else {}
构造。在这里使用开关将隐藏意图。如果错误删除了break
该怎么办?
切换对于枚举值非常有用,而不是用于比较。
答案 2 :(得分:6)
首先提出一个建议:switch
因为它只是用于切换而不是用于条件检查。
SwitchStatement:
switch ( Expression ) SwitchBlock
表达式支持表达式可转换为int或Enum。
这些标签据说与switch语句相关联,如 是常量表达式(§15.28)或枚举常量的值 案例标签中的(§8.9.1)。
对于1.6或更低版本的switch语句,只允许使用常量表达式和枚举常量,并且还支持java 7字符串值。不支持逻辑表达式。
另外,你可以按照@Stewart的回答做。
答案 3 :(得分:4)
Java仅支持直接值,而不支持case
语句中的范围,因此如果必须使用开关,首先映射到选项,然后启用它,如您提供的示例中唯一的选择。然而,这是非常过分的 - 只需使用if语句。
答案 4 :(得分:3)
switch语句用于在返回特定值时运行代码,if then else允许您在一个语句中选择一系列值。如果您想查看多个范围,我建议您执行以下操作(尽管我个人更喜欢Integer.signum方法):
int i;
if (var1 > var2) {
i = 1;
}
else if (var1 == var2) {
i = 0;
}
else {
i = -1;
}
答案 5 :(得分:2)
你最好使用if
语句; switch
方法不太明确,在这种情况下,您的switch
方法客观上是错误的。 The contract for Comparable#compareTo
不需要返回-1
或1
,只需返回int
的值为负数或正数。 compareTo
返回-42
完全合法,而switch
语句会丢弃结果。
答案 6 :(得分:0)
如果使用一个变量的值,请使用开关。如果正在使用多个变量,请使用if。在您声明的问题中,如果 ,则 。
答案 7 :(得分:0)
不幸的是你不能在java中这样做。它可以CoffeeScript
或其他语言。
我建议使用if
- else
语句,在额外的方法中移动“do stuff”。通过这种方式,您可以将if-else保存在清晰可读的代码中。