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

dww*_*n66 4 java switch-statement

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

考虑:

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

             etc.
Run Code Online (Sandbox Code Playgroud)

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

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

       etc.
Run Code Online (Sandbox Code Playgroud)

我无法在Java教程中找到任何表明存在切换变化的内容.但是有吗?

dcp*_*dcp 8

关于你能做的最好的事情是这样的(见下文).所以在某些情况下(没有双关语:)),使用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;
}
Run Code Online (Sandbox Code Playgroud)

但是,您可以考虑的另一种方法是使用地图.

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");
}
Run Code Online (Sandbox Code Playgroud)

然后你可以使用地图查看卡片的套装.

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

  • 地图......除了我的新手之外的另一个有趣的功能......我有一个或两个周末研究项目.:) 谢谢. (2认同)