基本 Java 骰子程序 - 很难找到最长的连胜纪录

Basic Java Dice program - trouble finding longest streak

我目前正在从事一个基本的(正如我所见,经常分配)java 项目,我将在其中创建一个模拟掷骰子的程序。在我的项目中,我只模拟两个六面骰子的滚动。完成这个任务需要用到数组

到目前为止,我有 try/catch 块询问用户他们想要模拟的卷数,并确保他们提供整数输入。这反过来为骰子模拟器创建数组的长度。到目前为止,我的代码可以工作,但现在我陷入了如何在该数组中找到最长的连续求和的问题。

我很确定我需要将每次滚动的 dieSum 值与自身进行比较,如果 dieSum == dieSum 则将我当前连胜的变量增加 1。我只是不确定该怎么做这个,我怀疑我可能有问题,因为我的 dieSum 变量没有存储到数组中。

import java.util.Scanner;
public class RollThoseDice {
public static void main(String[] args) {
    Scanner kbd = new Scanner(System.in);

    System.out.println("MyNameHere");
    System.out.println("ThirdProgram \n");

    //Variable listing and initialization
    int rollTotal = 0; //number of trials
    int dieSum; //sum of the outcome of both dice per roll

    //Try - Catch block to ensure positive integer input from user for rollTotal
    System.out.println("***Welcome to the Dice Roll Probability Generator***");
    while (true){
        System.out.println("Enter how many dice rolls you would like to simulate: ");
        try {
            rollTotal = kbd.nextInt() + 1;
            break;
        } catch (Exception e) {
            System.out.println("Please only enter a positive integer. Try again. ");
            kbd.next();

        }
    }


    int die1[] = new int[rollTotal]; //Variable for the first die
    int die2[] = new int[rollTotal]; //Variable for the second die


    int[] diceArray = new int[rollTotal];   
    for (int i=1; i<diceArray.length; i++ ) {
        die1[i] = (int)(6.0*Math.random() + 1.0); //Generate random # between 1-6
        die2[i] = (int)(6.0*Math.random() + 1.0);
        System.out.println("***Roll " + i + "***");
        System.out.print("Dice one rolled: " + die1[i] + ", dice two rolled: " + die2[i] + "\n") ;
        dieSum = die1[i] + die2[i];
        System.out.println("Total rolled was: " + dieSum + "\n");

    }
}

}

非常感谢您帮我看一下这个,请原谅我对网站和编程的新鲜感。

一个非常简单的解决方案是在您的代码中再创建两个变量。

一个保存当前连胜,另一个保存前一个 dieSum。

每次你完成掷骰时 运行 一个 if 语句,将当前 dieSum 与之前的 dieSum 进行比较,如果它们相等,则增加你的连续得分,否则只需将你的连续得分设置回 0。

您需要跟踪另外两个变量:int biggestStreak, currentStreak(初始化为 1)。

掷骰子并存储变量后,您可以检查您的掷骰是否与之前的掷骰相同并增加currentStreak

int lastDieSum = die1[i-1] + die2[i-1];

if (lastDieSum == dieSum) {
     currentStreak++;
     if (currentStreak > biggestStreak) {
         biggestStreak = currentStreak;
     } 
} else {
     currentStreak = 1;
}

如果当前连胜大于最大连胜,最后一位现在也会将当前连胜存储在 biggestStreak 中。最后,当值不再与 lastDieSum.

相同时,当前连胜设置回零

希望对您有所帮助!