如何在switch语句中使用大于或等于

时间:2013-08-29 11:58:29

标签: java if-statement switch-statement

使用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语句中使用“大于或等于”吗?

8 个答案:

答案 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因为它只是用于切换而不是用于条件检查。

From JLS switch statements

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不需要返回-11,只需返回int的值为负数或正数。 compareTo返回-42完全合法,而switch语句会丢弃结果。

答案 6 :(得分:0)

如果使用一个变量的值,请使用开关。如果正在使用多个变量,请使用if。在您声明的问题中,如果 ,则

答案 7 :(得分:0)

不幸的是你不能在java中这样做。它可以CoffeeScript或其他语言。

我建议使用if - else语句,在额外的方法中移动“do stuff”。通过这种方式,您可以将if-else保存在清晰可读的代码中。