2014-10-26 84 views
3
switch (i) { 
    case ("+" || "/"): 
     setOperator("i"); 
     break; 
} 

在Java中這樣做的最佳方法是什麼?switch case語句中的布爾邏輯 - Java

+0

如果()........... – 2014-10-26 15:03:30

+0

我需要使用switch語句。 – Jack 2014-10-26 15:04:48

+2

你爲什麼?這段代碼看起來很糟糕。 – 2014-10-26 15:04:50

回答

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) 
} 
+3

他們爲什麼給你一個-1? – Jack 2014-10-26 15:06:37

+0

沒有線索。這是正確的答案 – 2014-10-26 15:06:46

+0

+1這確實是正確的答案。誰低估了這一點,請解釋原因。 – oopbase 2014-10-26 15:07:24

1

是的,你可以做:Fall throughswith case

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