当前位置: 首页 > 知识库问答 >
问题:

是否可以将'if'语句转换为'switch'语句?[已关闭]

长孙高远
2023-03-14

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

共有3个答案

常雅珺
2023-03-14

我不会将单个if语句转换为switch语句,但这是可以完成的。您需要为开关指定默认值。如果您正在使用许多If。。。其他声明将保证切换。

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;
}
易弘阔
2023-03-14

它取决于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)

郑衡
2023-03-14

首先,从技术上讲,它是一个开关块。其次,是的,这是可能的,但极为不必要。然而,如果你想这样做,这里有一种方法可以让你转换。。。

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;
}

当然,如果要比较字符串以外的内容,可以使用操作符

这两者也是可以互换的,但前提是您使用charsint并且只测试一个条件。

 类似资料:
  • 我是java编程新手,很难弄清楚这一点。 这是我的代码: 有没有办法将其转换为switch-case语句?

  • 问题内容: 可以从python中的单行方法返回 寻找这样的东西 尝试过,并且语法无效 我可以轻松做到: 但只是好奇我是否可以将上述if语句合并为一行 问题答案: 可以在一行上编写标准的“ if”语句: 但是pep 8样式指南建议不要这样做: 通常不建议使用复合语句(同一行上有多个语句)

  • 想改进这个问题吗 通过编辑此帖子,添加详细信息并澄清问题。 这是我的if语句。我只想写得更短。因为我认为这些是无效的。顺便说一句,每个if语句都是独立的。

  • 问题内容: 告诉我 少于3个分支的交换机效率低下,请改用if语句。 这是为什么?为什么是3?他们如何定义效率? 问题答案: 因为语句是使用两个特殊的JVM指令和编译的。在处理很多案例时它们很有用,但是当您只有很少的分支机构时,它们会导致开销。 相反,一条语句被编译为典型的 …链,这些链速度更快,但在长分支链中使用时需要更多的比较。 您可以通过查看字节码来看到差异,无论如何我都不担心这些问题,如果有

  • 是否可以在x86汇编语言中模拟if-statment(使用masm语法)?我想在x86汇编语言中做这样的事情,但我不确定应该使用哪个运算符来模拟if-ore语句。我应该使用指令,还是指令,还是其他指令?

  • switch 语句可以替代多个 if 判断。 switch 语句为多分支选择的情况提供了一个更具描述性的方式。 语法 switch 语句有至少一个 case 代码块和一个可选的 default 代码块。 就像这样: switch(x) { case 'value1': // if (x === 'value1') ... [break] case 'value2':