2016-09-23 2 views
0

次のコードは、5つのダイスの単純なロールを示しています。5つのダイのロールに関する特定のifステートメント

2つのダイスが一致していて、他の3つのダイスも一致している場合、私はロールの合計を与えたいと思います。しかし、私はifステートメントを使用している間にそれをどのように表現するかについてはあまりよく分かりません。

例:4 4 3 4 3

さらに、I 1は6た後、次の(、サイコロの値は、連続ラップアラウンド配列で配置することができればそれを把握したいです)。

例:6 1 2 3 4

すべてのヘルプやアドバイスをいただければ幸いです、ありがとうございました!

int die1; 
    int die2;   
    int die3; 
    int die4; 
    int die5; 
    int roll; 

    die1 = (int)(Math.random()*6) + 1; 
    die2 = (int)(Math.random()*6) + 1; 
    die3 = (int)(Math.random()*6) + 1; 
    die4 = (int)(Math.random()*6) + 1; 
    die5 = (int)(Math.random()*6) + 1; 

    System.out.print("The roll was : " + die1 + " " + die2 + " " + die3 + " " + die4 + " " + die5 + " "); 
+0

ダイをリストに追加して、それらを反復できるようにする必要があります –

答えて

0

ロールをArrayList<Integer>に入れると、はるかに簡単になります。我々が持っていることを仮定すると、我々はStreamを使用することができます。

Collection<Long> counts = rollList.stream()      //Stream<Integer> 
           .collect(Collectors.groupingBy(//Group to Map 
           Function.identity(),   //Key = The roll itself 
           Collectors.counting()))  //Value = How many were rolled 
           .values()      //Values only 

if(counts.contains(2) && counts.contains(3)) { //One rolled twice, other thrice 
    int total = rollList.stream().mapToInt(Integer::intValue).sum(); //Sum of all rolls 
    System.out.println("You rolled a full house with a total value of "+total); 

else if(counts.size() == 5) //If all rolls were different, it was definitely a straight because there are 6 wrapping values and 5 rolls 
    System.out.println("You rolled a straight"); 

はまた、単にIntStreamに直接値を置くことができ、私は思います。

関連する問題