Java检查多个ifs

时间:2016-02-18 07:25:07

标签: java

我正在制作一个轮盘赌游戏,其中一组数字等于红色而另一组等于黑色。 游戏将输出一个随机数1-36,数字对应红色或黑色。我该如何做以下代码?

if (rouletteSpin == (2|4|6|8|10|11|13|15|17|20|22|24|26|28|29|31|33|35))

以便检查多个场景

6 个答案:

答案 0 :(得分:5)

你必须做很多布尔OR语句。

或者,您可以将所有数字添加到Set对象,然后只需执行if set.contains(rouletteSpin)

如果您对性能感兴趣,那么比使用列表或数组更快。 (常数与线性)

您可以声明像

这样的集合
HashSet<Integer> set = new HashSet<>;
set.add(num); // for all your numbers 

因为有两种颜色(红色和黑色),所以只存储一组数字也是有意义的。如果红色组不包含数字,则必须为黑色。

答案 1 :(得分:2)

使......像:

private static final Set<Integer> RED = Collections.unmodifiableSet(
        new HashSet<Integer>(
        Arrays.asList(2, 4, 6, 8, 10, 11, 13, 15, 17, 20, 22, 24, 26, 28, 29, 31, 33, 35)));

然后使用

RED.contains(rouletteSpin);

答案 2 :(得分:1)

您可以将所有值放入列表中,例如

List<Integer> color = Arrays.asList(2, 4, 6); // And so on

然后在if子句中使用contains:

if(color.contains(rouletteSpin) {
  // Do something
} 

答案 3 :(得分:1)

我建议使用数组或集合或其他集合来组合所有项目,例如

  private static int[] reds = new int[] {2, 4, 6, 8, 10, ...};

然后检查

  if (Arrays.stream(reds).anyMatch(i -> i == rouletteSpin)) {
    ...
  }

答案 4 :(得分:0)

我会保留一个红色列表并查询列表。例如:

Integer[] redArray = {1, 3, 5 ...};
List<Integer> red = Arrays.asList(redArray);
int num = 3;
if(red.contains(num)){
    System.out.println("red");
}

答案 5 :(得分:0)

虽然HashSet方法有其优点,但这里还有一个尚未提及的方法:

switch(x) {
case 1:
case 3:
case 5:
case 7:
  doSomething();
  break;
case 2:
case 4:
case 6:
case 8:
  doSomethingElse();
  break;
default:
  fail();
  break;
}

这也适用于枚举,即ROLL_00, ROLL_0, ROLL_1,......编译器甚至可以协助检查您是否错过了任何选项!