java - 我可以在单个开关中使用一系列值吗?

标签 java switch-statement

我正在尝试简化 Card 类,想知道是否有任何方法可以在 switch 语句中使用一系列值?

考虑:

 if((card<14))
     suit="Hearts";
     else
     if((card>14)&&(card<27))
         suit="Clubs";

             etc.

相反,我想使用 switch 语句,例如:

switch(card){
    case1: through case13:
    suit="Hearts";
    break;

       etc.

我无法在 Java 教程中找到任何暗示存在这种开关变体的内容。但是有吗?

最佳答案

你能做的最好的事情就是这样(见下文)。所以在某些情况下(没有双关语意:)),最好使用 if 语句。

switch(card){
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
    case 10:
    case 11:
    case 12:
    case 13:
        suit="Hearts";
        break;
}

但是,您可以考虑的另一种方法是使用 map 。

Map<Integer, String> map = new HashMap<Integer, String>();
for (int i = 1; i <= 14; ++i) {
  map.put(i, "Hearts");
}
for (int i = 15; i <= 26; ++i) {
  map.put(i, "Clubs");
}

然后您可以使用 map 查找卡片的花色。

String suit1 = map.get(12); // suit1 will be Hearts after the assignment
String suit2 = map.get(23); // suit2 will be Clubs after the assignment

关于java - 我可以在单个开关中使用一系列值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9829433/

相关文章:

java - 嵌套的 try/catch block : Two Different Implementations

java - 以编程方式加载 Spring 3.1 中的属性

java - 为什么 float 适合 double 而 float[] 不适合 double[]?

Java 遍历目录中的所有文件和唯一的 RAR 存档

c - 切换大量 case 与单个 if

c - 为什么我的案例给出错误?为什么我不能将变量放入 switch 案例中?

java - Java switch 语句中的多个/重复案例

java - Eclipse Java 虚拟机启动器 jvm.cfg 错误

javascript - 如何避免输入值切换大小写

swift - 下划线符号是否忽略或检查 Swift 中 switch 语句中的空值?