java - 随机掷2个骰子(java)

标签 java random dice

将掷两个骰子,并生成 2 个 1 到 6 之间的随机数。总和将 从这 2 个数字中取出并用于决定下一步。如果用户的总和是 3, 5, 7, 9,11 那么他们 失去。如果总和是 4、6、8、10,则他们获胜。如果 sum 为 2, 12 那么程序会自动滚动 再次掷骰子,直到用户获胜或失败。

  1. 为上述算法创建一个游戏,其中包含以下结构:
  2. 游戏应要求用户输入他/她的名字。
  3. 游戏应该能够生成 1 - 6 之间的随机数。
  4. 程序应该能够显示 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/

相关文章:

java - 在 Java 中以相同方式处理多个方法中的多个异常的最佳实践

java - Spring+Hibernate验证: throws Hibernate Exceptions and not Spring exceptions

java - Random.nextGaussian() 的真正最大值(和最小值)是多少?

c - 为什么 srand(time(NULL)) 在 main 上出现段错误?

java - 在我的 java GUI 中实现 updateVal(int i) 方法时遇到问题

Java Streams - 在 map() 中使用 setter

java - 返回多个数组的方法

arrays - 从数组中选择一个随机元素

javascript - 如何一次掷一个骰子?

Javascript 骰子游戏 : How to remove HP depending on dice result?