【问题标题】:Shortening Switch statements with 20+ cases用 20 多个案例缩短 Switch 语句
【发布时间】:2015-12-06 04:40:41
【问题描述】:

首先我想为这个奇怪的问题道歉,我对 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 新手!

提前致谢。

【问题讨论】:

  • 我认为您应该发布一些包含在switch 语句中的Java 代码。目前,如果没有更多信息,我认为我们无法删除任何案例。
  • 不,这完全是示例代码。它与我需要删除的任何内容无关。我只是问是否有办法通过遍历这些整数并用 1 个 case 而不是 30 个 case 来缩短它。

标签: java


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 谢谢!这很有帮助!
    【解决方案3】:
    • 如果您有 20 多个不同的案例需要处理,您必须处理 他们。没有其他选择。
    • 如果您对不同的任务有相同的任务,则会遇到一个小问题 情况下,您可以做您正在做的事情,例如多个任务的单个任务 案例。

    并针对您的具体情况回答,您可以写

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

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

    【讨论】:

    • 好吧,我是一个初学者,但即使我很惭愧,我也没有想到这一点。谢啦!非常感谢。
    • 如果您向我们展示 switch 语句中包含的实际代码,我们或许可以简化事情。
    • @andrewDev15 为什么要害羞?随时接受 SO 的帮助。编码愉快。
    猜你喜欢
    • 2022-01-17
    • 2015-06-21
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-23
    • 1970-01-01
    相关资源
    最近更新 更多