Vla*_*iev 11 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;
}
Run Code Online (Sandbox Code Playgroud)
你有什么能告诉新手在switch语句中使用"大于或等于"?
Ste*_*art 20
不确定这是不是你要问的,但你可以这样做:
int var1;
int var2;
int signum = Long.signum((long)var1 - var2);
switch(signum) {
case -1: break;
case 0: break;
case 1: break;
}
Run Code Online (Sandbox Code Playgroud)
Gui*_*ume 11
我强烈推荐一个if(var1>var2){}else if (var1==var2) {} else {}结构.在这里使用开关将隐藏意图.如果a break被错误删除怎么办?
切换对于枚举值很有用且清晰,而不是用于比较.
首先提出一个建议:switch因为它只能用于切换而不能用于条件检查.
SwitchStatement:
switch ( Expression ) SwitchBlock
Run Code Online (Sandbox Code Playgroud)
表达式支持表达式可转换为int或Enum的表达式.
这些标签被称为与switch语句相关联,case标签中的常量表达式(§15.28)或枚举常量(§8.9.1)的值也是如此.
只有常量表达式和枚举常量允许在1.4或更低版本的switch语句中使用java 7字符串值.不支持逻辑表达式.
或者你可以按照@Stewart的回答做.
Java 仅支持直接值,而不支持case语句中的范围,因此如果必须使用开关,请先映射到选项,然后再打开它,就像您提供的示例中那样,这是您唯一的选择。然而,这是相当过分的——只使用 if 语句。
switch 语句用于在返回特定值时运行代码,if then else 允许您在一个语句中选择一系列值。如果您想查看多个范围,我建议您执行如下操作(尽管我个人更喜欢 Integer.signum 方法):
int i;
if (var1 > var2) {
i = 1;
}
else if (var1 == var2) {
i = 0;
}
else {
i = -1;
}
Run Code Online (Sandbox Code Playgroud)
你最好用这些if陈述;该switch方法不太明确,在这种情况下,您的switch方法客观上是错误的。的合约Comparable#compareTo不需要返回-1或1,只需返回的值为int负数或正数即可。compareToreturn是完全合法的-42,你的switch语句会丢弃结果。