3

我敢肯定,对大多数人来说,这是一个相当微不足道的问题,但我不能完全弄清楚我是如何让前一个骰子整数与程序中的前一掷骰子保持相同的。我认为代码是相当不言自明的,这是一个如此微不足道的程序,我因为无法理解它而自责。

import java.util.Random;

public class Dice {

    public static void main(String[] args) {
        Random rand = new Random();
        int min = 1;
        int max = 6;
        int loop = 0;
        int diceRollOne = 0;
        int diceRollTwo = 0;
        int diceTotal = 0;
        int prevDiceTotal = 0;

        while (loop < 15000) {
            loop++;
            diceRollOne = rand.nextInt(max - min + 1) + min;
            diceRollTwo = rand.nextInt(max - min + 1) + min;
            diceTotal = diceRollOne + diceRollTwo;

            System.out.println("Dice Roll 1: " + diceRollOne);
            System.out.println("Dice Roll 2: " + diceRollTwo);
            System.out.println("Dice Total: " + diceTotal);
            System.out.println("previous total: " + prevDiceTotal);

            prevDiceTotal = diceTotal;

            if (diceRollOne == diceRollTwo || diceTotal == prevDiceTotal) {
                System.out.println("After " + loop + " loops the");
                System.out.println("Numbers Match, YOU GET NOTHING, YOU LOSE, GOOD DAY SIR!");
                System.exit(0);
            }
        }
    }
}

基本思想是 15,000 次模拟。掷两个骰子。如果你掷出双重退出。如果您在当前掷骰中掷出的总和与前一次掷骰的总和相同,则退出。我已经尝试通过打印出以前的骰子总数来进行调试,但每次都默认为零。

4

3 回答 3

3

您只想prevDiceTotal = diceTotal;在 if 语句之后移动 to 。

        if (diceRollOne == diceRollTwo || diceTotal == prevDiceTotal) {
            System.out.println("After " + loop + " loops the");
            System.out.println("Numbers Match, YOU GET NOTHING, YOU LOSE, GOOD DAY SIR!");
            System.exit(0);
        }

        prevDiceTotal = diceTotal;
于 2013-05-15T00:59:24.427 回答
2

您有以下内容:

prevDiceTotal = diceTotal;

if(diceRollOne == diceRollTwo || diceTotal == prevDiceTotal){

正如现在所写的那样,它保证if-expressionTrue

在你的块之后移动作业。if

于 2013-05-15T00:59:40.050 回答
1

这是一个好的 IDE 可以帮助您的地方。这是 IntelliJ IDEA(它有一个免费的社区版)为您的代码显示的内容。请注意该if()语句的突出显示以及对问题的描述。

IntelliJ 截图

正如其他人所说,将分配移到块prevDiceTotal之后if()以解决问题。

于 2013-05-15T01:35:28.853 回答