Java 循环骰子滚动程序,上一次滚动和重复检查

Java 循环骰子滚动程序,上一次滚动和重复检查,java,dice,Java,Dice,对大多数人来说,这是一个相当简单的问题,但我不能确定如何使上一个骰子整数保持与程序中上一个骰子卷相同。我认为这段代码是相当不言自明的,而且这是一个如此琐碎的程序,我为自己不能理解它而自责 import java.util.Random; public class Dice { public static void main(String[] args) { Random rand = new Random(); int min = 1;

对大多数人来说,这是一个相当简单的问题,但我不能确定如何使上一个骰子整数保持与程序中上一个骰子卷相同。我认为这段代码是相当不言自明的,而且这是一个如此琐碎的程序,我为自己不能理解它而自责

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);
            }
        }
    }
}
import java.util.Random;
公共类骰子{
公共静态void main(字符串[]args){
Random rand=新的Random();
int min=1;
int max=6;
int循环=0;
int-diceRollOne=0;
int-two=0;
整数=0;
int-total=0;
while(循环<15000){
loop++;
diceRollOne=rand.nextInt(最大-最小+1)+min;
dicerlltwo=rand.nextInt(max-min+1)+min;
diceTotal=diceRollOne+diceRollTwo;
System.out.println(“骰子卷1:+dicerrollone”);
System.out.println(“骰子卷2:+diceRollTwo”);
System.out.println(“骰子总数:+diceTotal”);
System.out.println(“以前的总计:+prevDiceTotal”);
prevDiceTotal=diceTotal;
如果(diceRollOne==diceRollTwo | | diceTotal==prevDiceTotal){
System.out.println(“在“+loop+”循环之后”);
System.out.println(“数字匹配,你什么都得不到,你输了,再见,先生!”);
系统出口(0);
}
}
}
}

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

您只需移动
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);
        }

        prevDiceTotal = diceTotal;

您具有以下功能:

prevDiceTotal = diceTotal;

if(diceRollOne == diceRollTwo || diceTotal == prevDiceTotal){
正如现在编写的那样,它保证了
if表达式


将作业移动到
if
块之后。

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


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

感谢您的建议,尽管我的System.out.println仍然告诉我prevDiceTotal的值为0。仅适用于第一次通过(其中应为零或其他表示此时未设置的数字)。如果循环不止一次,则即使在循环后该值仍保持为0,该值也将正确。该值从未更改。这也意味着diceTotal和prevDiceTotal永远不会相同,因此循环只会因为重复而退出。很抱歉,我无意中将prevDiceTotal=diceTotal包含在If循环中。我是asha医学。