java - 两个骰子 throw 游戏问题

标签 java random

我的程序需要扔 2 个骰子,当两个骰子都是 6 时,它就会退出循环并显示它尝试了多少次,但由于某种原因,我得到了非常奇怪的尝试数字,例如,大多数都是“它花了 1 个骰子” -3次尝试”.. 请帮忙。

public class SheshBesh {
public static void main(String[] args){

    int r1 = 0;
    int r2 = 0;
    int tries = 0;

    while (r1 != 6 && r2 != 6) {
        r1 = (int)(Math.random() * 6) + 1;
        r2 = (int)(Math.random() * 6) + 1;
        tries = tries + 1;
    }

    System.out.println("Shesh-Besh apears... it took " + tries + " tries.");


}

}

最佳答案

我留下了关于调试的评论,这应该可以帮助您将来解决此类错误。您需要能够跟踪程序的执行,以便您可以开始推理它失败的原因。

原因是这一行:

while (r1 != 6 && r2 != 6)

如果 r1 为 6 并且 r2 为 4,则计算结果为 false,并退出循环。

您应该将其更改为以下之一:

while (r1 != 6 || r2 != 6)

或者更有启发性:

while (!(r1 == 6 && r2 == 6))

关于java - 两个骰子 throw 游戏问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33460165/

相关文章:

java - 循环遍历行并单击

java - Hibernate 验证错误的实体外键

python - 密码生成器的字符顺序如何随机化

c++ - 将字符串映射到 [0,100] 范围内的随机数的算法

php - 将随机文件下载为 zip

java - 如何将事件数据和事件名称从 Spring Boot 发送到 Angular?

Java 作为外部组件使用 Swing : main thread never exits

java - 如何创建 get() 调用返回可选包装值的自定义映射?

c++ - 随机打印出每个字符

text - 在哪里可以获得几乎所有英语单词的列表?