switch (i) {
case ("+" || "/"):
setOperator("i");
break;
}
在 Java 中执行此操作的最佳方法是什么?
当然。
只需使用
if(i.equals("+") || i.equals("/")) {
setOperator("i");
}
或者,如果您必须使用 switch 语句,您可以这样做:
switch(i) {
case "+":
case "/":
setOperator("i");
break;
}
基本上,您不可能像您考虑的那样真正拥有多个案例。它与 if 语句的结构不同,您可以在其中执行各种逻辑操作。Java 不会针对每种情况执行 if 语句。
相反,每次你case("foo")
时,Java都会将其视为称为案例标签的东西。这就是我们有时选择使用 switch 语句的原因,即使它们非常原始,有时不是很方便。因为我们有案例标签,所以计算机只需要做一次评估,它就可以跳到正确的位置并执行正确的代码。
以下是来自网站的引述,可能会对您有所帮助:
switch 语句,因为它最常使用,其形式为:
switch (expression) {
case constant-1:
statements-1
break;
case constant-2:
statements-2
break;
.
. // (more cases)
.
case constant-N:
statements-N
break;
default: // optional default case
statements-(N+1)
} // end of switch statement
这与下面的多路 if 语句具有完全相同的效果,但 switch 语句可能更有效,因为计算机可以计算一个表达式并直接跳转到正确的大小写,而在 if 语句中,计算机必须计算多达 N 个表达式才能知道要执行哪组语句:
if (expression == constant-1) { // but use .equals for String!!
statements-2
}
else if (expression == constant-2) {
statements-3
}
else
.
.
.
else if (expression == constant-N) {
statements-N
}
else {
statements-(N+1)
}
switch (i) {
case ("+"):
case ("/"):
setOperator("i");
break;
}
是的,你可以这样做:Fall through
swith case
switch (i) {
case "+":
case "/":
setOperator(i);
break;
}