switch case语句中的布尔逻辑 - Java

时间:2014-10-26 15:02:41

标签: java switch-statement

 switch (i) {
     case ("+" || "/"):  
        setOperator("i");
        break;
 }

在Java中执行此操作的最佳方法是什么?

3 个答案:

答案 0 :(得分:16)

当然。

只需使用

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

这与以下multiway 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)
}

答案 1 :(得分:1)

是的,您可以在Fall through

中执行:swith case
      switch (i) {
        case "+":
        case "/":
            setOperator(i);
            break;
      }

答案 2 :(得分:1)

switch (i) {
    case ("+"):
    case ("/"):
        setOperator("i");
        break;
    }
相关问题