缩短20多个案例的转换语句

时间:2015-09-10 03:25:54

标签: java

首先,我想为这个奇怪的问题道歉,我对Java很陌生。

所以,让我们说我在这里有一段代码:

    switch(test) {

        case 50:
        case 51:
        case 52:
        case 53:
        case 54:
        case 55:
        case 56:
        case 57:
        case 58:
        case 59:
        case 60:
        case 61:
        case 62:
        case 63:
        case 64:
        case 65:
        case 66:
        case 67:
        case 68:
        case 69:
        case 70:
        case 71:
        case 72:
        case 73:
        case 74:
        case 75:
        case 76:
        case 77:
        case 78:
        case 79:
        case 80:
            System.out.println("random");


        }
        break;

仅举例。

有很多案例,我想知道是否有办法缩短它。我尝试使用for循环迭代这些数据,但我无法完全绕过它。任何帮助表示赞赏。

再次,请原谅这个令人反感的问题!我对Java很新!

提前致谢。

3 个答案:

答案 0 :(得分:4)

  • 如果您有20多个不同的案件要处理,您必须处理 他们。别无选择。
  • 如果你有不同的任务,那么一个小问题就会出现 在这种情况下,你可以做你正在做的事情,就像单个任务一样 例。

并回答你的具体情况,你可以写

if(yourSwitchParam >= 50 && yourSwitchParam <=80 ){
   System.out.println("random");
}

在交换机顶部添加此条件。如果您有任何进一步的逻辑,请打开它们。

答案 1 :(得分:3)

如果所有这些情况都执行相同的语句,那么您可以使用default语句来捕获一般情况。或者将switch语句转换为if语句:

if (test >= 50 && test <= 80) {
    ...
}

一般来说,避免switch陈述是个好主意。它们使维护变得困难,因为它们通常要求您在多个位置添加选项,这可能导致难以检测的错误。在某些特定情况下,它们是良好的做法,但它们并不常见。一个很好的选择是定义一个enum enum成员指示该成员的行为。

答案 2 :(得分:1)

如果您只是寻找键/值关系,则可以使用数字静态初始化HashMap并在恒定时间内查找它们。迭代的其他测试将具有O(n)复杂度。