使用带有多个整数Java的If语句

Use an If statement with multiple integers Java

本问题已经有最佳答案,请猛点这里访问。

我在爪哇制作纸牌游戏"战争"文本。我有自己的代码,但我认为应该有一个更简单的方法:

1
2
3
if (cardValue == 1 || cardValue == 5 || cardValue == 9 || cardValue == 13 || cardValue == 17 || cardValue == 21 || cardValue == 25 || cardValue == 29 || cardValue == 33 || cardValue == 37 || cardValue == 41 || cardValue == 45 || cardValue == 49 || ){
        System.out.println("Clubs");
    }

钻石、红心和铁锹等。有更简单的方法吗?我在想这样的事情:

1
2
3
if (cardValue == 1, 5, 9, 13, 17, 21, 25, 29, 33){
        System.out.println("Clubs");
    }

或者这个

2

但是


好吧,你可以用Set测试会员资格:

1
2
3
4
5
6
Set<Integer> values =
    new HashSet<Integer>(Arrays.asList(1, 5, 9, 13, 17, 21, 25, 29, 33));

if (values.contains(cardValue)) {
    System.out.println("Clubs");
}

当然,这有点冗长。Java不是最有表现力的语言,但是你想做的是非常常见的,很多其他更动态的语言都有语法。为了进行比较,这就是同一段代码在Python中的外观——这更接近于您的想象:

1
2
if cardValue in (1, 5, 9, 13, 17, 21, 25, 29, 33):
    print("Clubs")


您可以使用实用方法Arrays.binarySearch()

2

请注意,int值必须按数字顺序排列才能使此代码工作。也就是说,它的性能非常好。


在这种情况下,您可以使用modulo:

1
2
3
if (cardValue % 4 == 1) {
  System.out.println("clubs");
}

但这就要求所有卡德瓦卢1,5,9,13,…颜色相同。2,6,10,14,…是另一种颜色的3,7,11,15,…是第三种颜色的0,4,8,12,…是最后一种颜色。然后,可以使用(cardValue % 4)标识颜色(结果是值0、1、2或3)。下面是打印颜色的代码。(您可能有不同的颜色顺序)

字符串颜色=空;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
switch (cardValue % 4) {
case 0:
  color ="hearts";
  break;
case 1:
  color ="clubs";
  break;
case 2:
  color ="spade";
  break;
default:
  color ="diamond";
  break;
}
System.out.println(color);

更改架构。没有一个字段表示等级和套装。有一个军衔场,一个军衔场,一个军衔场,一个军衔场,一个军衔场。