Java 掷两个骰子游戏问题

Java 掷两个骰子游戏问题,java,random,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) {

我的程序需要掷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)
,根据德摩根定律,这相当于
while(!(r1==6&&r2==6))


否则,如您的问题所示,
而(r1!=6&&r2!=6)
在r1或r2等于6时停止。这相当于
while(!(r1==6 | | r2==6))

我留下了一条关于调试的评论,这将在将来帮助您处理此类错误。您需要能够跟踪程序的执行情况,以便能够开始分析程序失败的原因

原因是这一行:

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

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

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

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

甚至更具教育意义的是:


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

您是否尝试过将
System.out.println(“trys:+trys+”r1:+r1+”r2:+r2”)添加到while循环中,以便您可以跟踪程序的执行情况以及每次循环中发生的情况?@DevinHoward您是对的,我会尝试一下,谢谢。在这里工作
谢什贝什阿佩尔斯。。。尝试了3次。
,所以不确定您的终端有什么不同。但是&&符号的意思是“和”,所以我不知道understand@LiziPizi补充说明。搜索“德摩根定律”。