滚动两个骰子并返回计数

时间:2018-04-17 14:41:51

标签: java dice

我正在编写一个java程序来模拟两个骰子的滚动。对于每个掷骰子,如果两个骰子没有相同的脸,我增加一个计数器。直到两个骰子都有相同的脸,我想打印出计数器值。 Count基本上计算在两个骰子上实现相同面部所需的次数。

我试着写:

int count = 0;

while (true) {
    int dice1 = getRandom(1,6);
    int dice2 = getRandom(1,6);

    if (dice1 != dice2) {
        count ++;
    }
System.out.println(count);

代码似乎没有产生正确的输出。我很好奇,如果我根据我的逻辑正确模拟它?我是java的新手,并希望得到一些帮助。

getRandom()函数返回1到6之间的随机数,因为骰子可以有1到6个值。

private static int getRandom(int n1, int n2){
    int retVal = 0;

    retVal = n1 + (int) Math.floor(Math.random() * (n2 - n1 + 1));

    return retVal;
}

3 个答案:

答案 0 :(得分:2)

您始终打印计数。你应该只在数字相等的情况下打印计数,这一点你应该突破循环:

while (true) {
    int dice1 = getRandom(1,6);
    int dice2 = getRandom(1,6);

    if (dice1 != dice2) {
        count++;
    } else {
        break;
    }
}
System.out.println(count);

答案 1 :(得分:2)

你快到了!

您遇到的问题是您永远不会终止while loop。你需要这样的东西:

int count = 0;
boolean roll = true;
while (roll) {
    int dice1 = getRandom(1,6);
    int dice2 = getRandom(1,6);

    if (dice1 != dice2) {
        count ++;
    } else {
       roll = false;
}
System.out.println(count);

我添加了boolean,表明是否应该掷骰子。一旦两个骰子具有相等的值,roll将设置为false并且循环终止。

答案 2 :(得分:1)

import java.util.Scanner;
public class Dice
{

public static void main(String[] args)
{
        Scanner myInput=new Scanner(System.in);
        System.out.print("Tell me how many rolls of dice you would like to see");
        int numRolls=myInput.nextInt();

        //create array based on rolls
        int [] diceArray=new int[13];
        int diceRoll1;
        int diceRoll2;
        for(int index=0;index < numRolls;index++)
        {
            //diceArray[index]=(int)(Math.random()*11)+2;
            diceRoll1=(int)(Math.random()*6)+1;
            diceRoll2=(int)(Math.random()*6)+1;
            diceArray[diceRoll1]++;
        }
        for(int index=2;index<diceArray.length;index++)
        {
            //System.out.println(diceArray[index]);
            System.out.println(index + " " + diceArray[diceRoll1]);
        }
}

}