是否可以将`if`语句转换为`switch`语句?

时间:2011-08-24 00:40:45

标签: java

是否可以将if语句转换为java中的switch语句?

5 个答案:

答案 0 :(得分: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 :(得分: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块中表示。

答案 2 :(得分: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;
}

答案 3 :(得分:0)

根据oracles网站上的这个例子,是的。是的你可以。这是链接

http://download.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

这取决于你想要做多少打字。您可以拥有仅包含一个条件的switch语句,或者具有处理多个条件的语句。

答案 4 :(得分:0)

理论上肯定,但它们旨在检查不同的东西。 if语句用于响应特定的布尔条件,而switch语句用于响应多种不同的可能性。也就是说,您可以轻松地将switch语句重写为一系列if else语句,反之亦然。通常情况下,你真的不想那样做。用锤子钉钉子,用螺丝刀拧动螺钉。你可以使用任何一种工具来固定装置,它们也不能正常工作。