我目前正在研究一个基本的(我可以看到,经常分配的)java项目,我将在其中创建一个模拟骰子滚动的程序。在我的项目中,我只模拟两个六面模具的滚动。需要使用数组来完成此任务。
到目前为止,我已经尝试了/ 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");
}
}
}
非常感谢您为我看一眼,并为我的网站和编程提供了新鲜感。
答案 0 :(得分:1)
您需要跟踪另外两个变量: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
相同时,当前条纹将重新设置为零。
我希望这有帮助!
答案 1 :(得分:0)
一个非常简单的解决方案是在代码中再创建两个变量。
持有当前连胜的一个,另一个拥有前一个dieSum。
每次你完成一个滚动运行if语句,将当前的dieSum与之前的dieSum进行比较,如果它们相等,则增加你的条纹,否则只需将你的条纹设置回0。