2011-08-24 92 views
1

是否有可能將if語句轉換爲java中的switch語句?是否可以將`if`語句轉換爲`switch`語句?

+2

困惑,你的意思是兩個語句互換? – Dair

+12

如果你願意,你可以把一個if語句變成關於培根重要性的100頁論文。 :)只需點擊'delete'鍵並開始輸入。 –

回答

4

首先,它在技術上的開關。其次,是的,這是可能的,但是非常沒有必要。不過,如果你想這樣做,在這裏是一種方式,你可以進行轉換...

int theCase; 
if (someVariable.equals(someString)) { 
    theCase = 1; 
} else if (someVariable.equals(someOtherString)) { 
    theCase = 2; 
} else { 
    theCase = 3; 
} 
switch (theCase) { 
    case 1: 
     //some code here 
     break; 
    case 2: 
     //some code here 
     break; 
    case 3: 
     //some code here 
     break; 
} 

當然,如果你是比較不是字符串你可以使用==運營商以外的東西。

這兩者也是可以互換的,但前提是您使用charsints並且只有一個條件正在測試。

+1

$ 5表示這個答案將被接受......(看看Tony的所有問題;所有被接受的答案都是我的:|) – fireshadow52

1

這取決於if中正在評估的內容以及您擁有多少這樣的相關if陳述。

如果你有

if (i == 1) 
{ 
    function1 (i) 
} 
else 
if (i == 2) 
{ 
    function2 (i) 
} 

if (i == 3) 
{ 
    function3 (i) 
} 

然後是。

switch (i) { 
    case 1: 
     function1(i); 
     break; 
    case 2: 
     function2(i); 
     break; 
    case 3: 
     function3(i); 
     break; 
} 

如果您有多個評估,那麼它會變得更難。 if (i == 1) && (j == 2)在switch-case塊中將更難以表示。

0

理論上肯定,但他們打算檢查不同的事情。一個if語句旨在響應特定的布爾條件,而switch語句旨在響應多種不同的可能性。也就是說,您可以輕鬆地將switch聲明重寫爲一系列if else聲明,反之亦然。通常雖然你真的不想這樣做。使用錘子打釘子並使用螺絲刀驅動螺釘。你可以使用任何一種工具固定裝置,但它們不能很好地工作。

1

我不會將單個if語句轉換爲switch語句,但它可以完成。您將需要指定交換機的默認值。如果您使用許多if ... else語句來保證切換。

int month = 8; 
String monthString = ""; 
if(month == 1) 
{ 
    monthString= "January"; 
}else if(month == 2) 
{ 
    monthString= "February"; 
}else if(month== 3) 
{ 
    monthString= "March"; 
} 
etc.... 

可以像寫道:

int month = 8; 
String monthString; 
switch (month) { 
    case 1: monthString = "January";  break; 
    case 2: monthString = "February";  break; 
    case 3: monthString = "March";   break; 
    case 4: monthString = "April";   break; 
    case 5: monthString = "May";   break; 
    case 6: monthString = "June";   break; 
    case 7: monthString = "July";   break; 
    case 8: monthString = "August";  break; 
    case 9: monthString = "September";  break; 
    case 10: monthString = "October";  break; 
    case 11: monthString = "November";  break; 
    case 12: monthString = "December";  break; 
    default: monthString = "Invalid month"; break; 
}