Java 如何在switch语句中创建案例的子组?

Java 如何在switch语句中创建案例的子组?,java,switch-statement,Java,Switch Statement,对于一个开关案例,假设我有5个不同的案例,其中三个共享一个我不想重复的共同动作。以下代码完美地说明了我想要实现的目标(但在切换中): 我能把它写成一个优雅的开关盒吗?我当前的解决方案如下所示: int[] smallGroup = {1,2}; if (!Arrays.asList(smallGroup).contains(x)) common = "thiry-"; 对于一个开关箱,假设我有5个不同的箱子和其中的3个 分享一个我不想重复的共同行动 在s

对于一个开关案例,假设我有5个不同的案例,其中三个共享一个我不想重复的共同动作。以下代码完美地说明了我想要实现的目标(但在切换中):

我能把它写成一个优雅的开关盒吗?我当前的解决方案如下所示:

    int[] smallGroup = {1,2};
    if (!Arrays.asList(smallGroup).contains(x))
            common = "thiry-";
对于一个开关箱,假设我有5个不同的箱子和其中的3个 分享一个我不想重复的共同行动

在switch case块中分组case的常用方法是将它们的case标记简单地分组在一起。没有规则强制每个case标记后面必须紧跟一段代码

下面的代码块说明了这一点,它将分数日数转换为小时:分钟:秒:毫秒。分钟和秒案例的代码是共享的,它们的案例被分组在一起:

// HOURS, MINUTES, SECONDS, AND MILLIS are integer constants; f is a fractional day

    for (int i = HOURS; i <= MILLIS; i++) {
        switch (i) {
            case HOURS:
                f = f * 24.0;
                break;
            case MINUTES:  case SECONDS:
                f = f * 60.0;
                break;
            case MILLIS:
                f = f * 1000.0;
                break;
        }
        x = trunc(f);         // trunc() here is equivalent to Math.floor()
        hmsm[i] = (int) x;    // hmsm[] is the result array
        f = f - x;
    }
//小时、分钟、秒和毫秒是整数常量;f是分数日

对于(int i=HOURS;i)你根本不需要开关。只要有一个包含预构建值的数组,然后为你的
x
@SJuan76选择一个,这个问题在链接的线程中既没有被问到也没有被回答。我的案例3到5完全不同。@y反过来,我发现我的问题可能表述得很糟糕。c中的逻辑ASE3到5应该是完全不同的。没有相似之处(除了“公共”变量)如示例中所示。您可以使用
switch
进行的所有分组都是参考问题中所解释的内容。无论如何,希望您可以将问题编辑为更容易回答的内容…@SJuan76如果没有关于我的问题被误解的提示,我将不知道还需要编辑什么。是的,这将是c对应于if(x==1 | | x==2)。但我有5个完全独立的案例。那么,“完全独立”一词意味着开关案例块可能不会有用。您的要求不明确。至少,案例必须通过某种公共属性或索引相关联。“共享”不过,为了便于阅读,案例应该放在单独的行上。
// HOURS, MINUTES, SECONDS, AND MILLIS are integer constants; f is a fractional day

    for (int i = HOURS; i <= MILLIS; i++) {
        switch (i) {
            case HOURS:
                f = f * 24.0;
                break;
            case MINUTES:  case SECONDS:
                f = f * 60.0;
                break;
            case MILLIS:
                f = f * 1000.0;
                break;
        }
        x = trunc(f);         // trunc() here is equivalent to Math.floor()
        hmsm[i] = (int) x;    // hmsm[] is the result array
        f = f - x;
    }