将掷两个骰子,并生成 2 个 1 到 6 之间的随机数。总和将 从这 2 个数字中取出并用于决定下一步。如果用户的总和是 3, 5, 7, 9,11 那么他们 失去。如果总和是 4、6、8、10,则他们获胜。如果 sum 为 2, 12 那么程序会自动滚动 再次掷骰子,直到用户获胜或失败。
- 为上述算法创建一个游戏,其中包含以下结构:
- 游戏应要求用户输入他/她的名字。
- 游戏应该能够生成 1 - 6 之间的随机数。
- 程序应该能够显示 3 个备用路径 A。 Win : 当随机数在 4 , 6, 8, 10 之间时 b.宽松:3、5、7、9、11 C。再次播放:2, 12
基本上,如果我从 2 个骰子中得到 2 或 12 的总和,并且必须一次又一次地进入循环,我需要不断获取新的随机数
public class assessmentrollingdicedemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
System.out.println("Enter User Name: ");
String userName = sc.next();
Random r = new Random();
int firstRoll = r.nextInt(6);
int secondRoll = r.nextInt(6);
firstRoll+= 1;
secondRoll+= 1;
int timesWin = 0;
int timesLose = 0;
int sumOfdice = firstRoll + secondRoll;
do
{
System.out.println("Die 1: "+ firstRoll);
System.out.println("Die 2: "+ secondRoll);
System.out.println("total: "+ sumOfdice);
if(sumOfdice == 4 || sumOfdice == 6 || sumOfdice == 8 || sumOfdice == 10)
{
System.out.println("Win");
timesWin++;
}
if(sumOfdice == 3 || sumOfdice == 5 || sumOfdice == 7 || sumOfdice == 9 || sumOfdice == 11)
{
System.out.println("Lose");
timesLose++;
}
else
{
System.out.println("Play Again");
}
} while(sumOfdice == 12 || sumOfdice ==2);
System.out.println("You won " + timesWin + "times");
System.out.println("You lost " + timesLose + "times");
}
}
我期望的是再次滚动应该只适用于骰子总和为 2 或 12 时,但我得到无限循环。如果您知道答案,请帮助我。
最佳答案
sumOfdice 应该在循环中被赋予一个新值 在 else 语句中你应该重新掷骰子
...
else{
System.out.println("Play Again");
firstRoll = r.nextInt(6);
secondRoll = r.nextInt(6);
sumOfdice = firstRoll + secondRoll;
}
...
否则 while() 将循环遍历相同的值。
关于java - 随机掷2个骰子(java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57969118/