使用骰子滚动程序循环,上一次滚动和双重检查

时间:2013-05-15 00:53:32

标签: java dice

对于大多数人来说这是一个相当微不足道的问题我确定但是我无法弄清楚我是如何让前一个骰子整数保持与程序中前一个骰子相同。我认为这段代码是相当自我解释的,这是一个非常简单的程序,因为我无法解决这个问题。

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次模拟。滚两个骰子。如果你滚动双重退出。如果您在当前滚动中滚动相同的总和作为前一滚动的总和,则退出。我已经尝试通过打印出之前的骰子总数进行调试,但每次都默认为零。

3 个答案:

答案 0 :(得分:3)

您只想将prevDiceTotal = diceTotal;移到if语句之后。

        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;

答案 1 :(得分:2)

您有以下内容:

prevDiceTotal = diceTotal;

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

正如现在所写,它保证if-expression

在<{1}}阻止之后移动作业

答案 2 :(得分:1)

这是一个好的IDE可以帮助您的地方。以下是IntelliJ IDEA(其中包含免费的Community Edition)显示的代码。请注意if()语句的突出显示以及问题描述。

IntelliJ Screenshot

正如其他人所说,在prevDiceTotal区块之后移动if()的分配来解决问题。