模拟滚动两个骰子java,看看结果是否为“ 1,1”

bag*_*ut1 4 java

这是我用Java编写的作业问题:编写一个模拟20个骰子滚动20次的程序。程序输出每对结果,并计算和输出结果为的次数1, 1

我试图运行此代码,但是遇到了问题。这是我的代码:

Scanner in = new Scanner(System.in);
int dice1, dice2, i, j, countOneOne;
countOneOne = 0;
// dice1 = 0;
// dice2 = 0;

for (j = 1;j <= 5; j++) {
    dice1 = 1 +(int) (Math.random() * 6); 
    j = dice1;
    System.out.println("Result of dice1: " + dice1);
} 
for (i = 1; i <= 5; i++) {
    dice2 = 1 +(int)(Math.random()*6);
    i = dice2;
    System.out.println("Result of dice2: " + dice2);
}

System.out.println("Result of dice1: " + dice1 + " ; Result of dice2: " + die2);   

if (dice1 == 1 && dice2 == 1) countOneOne++;

System.out.println(countOneOne + " is the number of 1, 1 results");
Run Code Online (Sandbox Code Playgroud)

首先,它不断告诉我我必须初始化dice1dice2而且我不明白为什么。但更重要的是,我知道这是不正确的,但是我不确定如何编写同时掷两个骰子并同时计数两个骰子的代码。

另外,我尝试将它们放在一个循环中。这可能吗?

Ell*_*sch 6

使用时,您的代码是关闭一点点,Math.random() * 6你会在范围得到的值0,以5包容性的(需要添加一个)。而且,如果提取将模具滚动到方法的逻辑,则逻辑会简单得多。就像是,

public static int rollDie(int sides) {
    return (int) (Math.random() * sides) + 1;
}
Run Code Online (Sandbox Code Playgroud)

然后,您想实现您的方法。循环二十次,掷两个骰子。计算蛇眼的数量并打印滚动结果。喜欢,

public static void main(String[] args) throws Exception {
    int snakeEyes = 0;
    // Twenty times
    for (int i = 0; i < 20; i++) {
        // Roll two dice
        int die1 = rollDie(6), die2 = rollDie(6);

        // Count snake eyes.
        if (die1 == 1 && die2 == 1) {
            snakeEyes++;
        }

        // Display roll results.
        System.out.printf("Result of die1: %d ; Result of die2: %d%n", die1, die2);
    }
    System.out.printf("%d is the number of 1,1 results%n", snakeEyes);
}
Run Code Online (Sandbox Code Playgroud)