【问题标题】:In Java, is there some kind of coding method that's better than excessive if..else statements?在 Java 中,是否有某种编码方法比过多的 if..else 语句更好?
【发布时间】:2013-12-13 03:54:16
【问题描述】:

目前,我有一大段完美运行的 Java 代码。在其中,我收集了大量各种 if...else 语句。有没有一种更有效的方法来拥有与很多 if...else 语句相同的逻辑而没有这样一个混乱的文件?可能带箱子?

我目前的情况大致如下:

int input = (some numeric value);
if (input == 0) { ... } else { ... }
if (input == 1) { ... } else { ... }
/* And so on and so forth */

【问题讨论】:

标签: java if-statement logic


【解决方案1】:
switch(someVar) {
    case someConstant:
        //code
        break;
    case someOtherConstant:
        //code
        break;
    default:
        //code
        break;
}

您可以根据需要添加任意数量的案例。请注意,“someConstant”必须是一个常量(最终)值。据我所知,您不能将变量用于案例。

【讨论】:

  • 对于最后一点,只是在 Eclipse 中提取了一个简单的示例以供娱乐。在case 中尝试变量会得到错误case expressions must be constant expressions。几乎符合我们的预期。
  • @DennisMeng 嗯。我稍微编辑了一下。我认为您可以使用声明为final 的变量。
【解决方案2】:

是的!这看起来是使用 switch statement 的好时机 -

switch (input) {
  case 0: /* do something */ break;
  case 1: /* do something else */ break;
  default: /* do a third something */ break;
}

【讨论】:

  • 由于某种原因,当我有一个条件是 if ((some numeric value) && (some other numeric value)) { ... } 并用 switch((some numeric value) { case 0: { if((some other numeric value)) { ... } } }) 替换它时,我没有得到与 if 条件相同的逻辑输出.我使用的 if 语句之类的东西可以用于案例吗?
  • 是的,但在您的示例中,some other numeric value 必须为 0(因为这是切换条件)。
猜你喜欢
  • 2016-07-11
  • 1970-01-01
  • 2012-07-14
  • 1970-01-01
  • 1970-01-01
  • 2012-07-07
  • 1970-01-01
  • 1970-01-01
  • 2011-12-15
相关资源
最近更新 更多