我正在编写一个java程序来模拟两个骰子的滚动。对于每个掷骰子,如果两个骰子没有相同的脸,我增加一个计数器。直到两个骰子都有相同的脸,我想打印出计数器值。 Count基本上计算在两个骰子上实现相同面部所需的次数。
我试着写:
int count = 0;
while (true) {
int dice1 = getRandom(1,6);
int dice2 = getRandom(1,6);
if (dice1 != dice2) {
count ++;
}
System.out.println(count);
代码似乎没有产生正确的输出。我很好奇,如果我根据我的逻辑正确模拟它?我是java的新手,并希望得到一些帮助。
getRandom()函数返回1到6之间的随机数,因为骰子可以有1到6个值。
private static int getRandom(int n1, int n2){
int retVal = 0;
retVal = n1 + (int) Math.floor(Math.random() * (n2 - n1 + 1));
return retVal;
}
答案 0 :(得分:2)
您始终打印计数。你应该只在数字相等的情况下打印计数,这一点你应该突破循环:
while (true) {
int dice1 = getRandom(1,6);
int dice2 = getRandom(1,6);
if (dice1 != dice2) {
count++;
} else {
break;
}
}
System.out.println(count);
答案 1 :(得分:2)
你快到了!
您遇到的问题是您永远不会终止while loop
。你需要这样的东西:
int count = 0;
boolean roll = true;
while (roll) {
int dice1 = getRandom(1,6);
int dice2 = getRandom(1,6);
if (dice1 != dice2) {
count ++;
} else {
roll = false;
}
System.out.println(count);
我添加了boolean
,表明是否应该掷骰子。一旦两个骰子具有相等的值,roll
将设置为false并且循环终止。
答案 2 :(得分:1)
import java.util.Scanner;
public class Dice
{
public static void main(String[] args)
{
Scanner myInput=new Scanner(System.in);
System.out.print("Tell me how many rolls of dice you would like to see");
int numRolls=myInput.nextInt();
//create array based on rolls
int [] diceArray=new int[13];
int diceRoll1;
int diceRoll2;
for(int index=0;index < numRolls;index++)
{
//diceArray[index]=(int)(Math.random()*11)+2;
diceRoll1=(int)(Math.random()*6)+1;
diceRoll2=(int)(Math.random()*6)+1;
diceArray[diceRoll1]++;
}
for(int index=2;index<diceArray.length;index++)
{
//System.out.println(diceArray[index]);
System.out.println(index + " " + diceArray[diceRoll1]);
}
}
}