是否可以将if
语句转换为java中的switch
语句?
答案 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;
}
当然,如果您要比较字符串以外的其他内容,则可以使用==
运算符。
这两者也是可以互换的,但前提是你正在使用chars
或ints
并且只有一个条件正在接受测试。
答案 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
语句,反之亦然。通常情况下,你真的不想那样做。用锤子钉钉子,用螺丝刀拧动螺钉。你可以使用任何一种工具来固定装置,它们也不能正常工作。