两个骰子投掷游戏问题

时间:2015-11-01 07:38:10

标签: java random

我的程序需要抛出2个骰子,当它们都是6时,它会退出循环并显示它尝试了多少次,但出于某种原因,我会得到非常奇怪的尝试数字,其中大多数是"花了1-3次尝试" .. 帮助PLZ。

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.");


}

}

2 个答案:

答案 0 :(得分:1)

应该是while (r1 != 6 || r2 != 6),根据De Morgan的定律,这相当于while ( ! (r1 == 6 && r2 == 6) )

否则,正如您的问题一样,当 r1或r2等于6时,while (r1 != 6 && r2 != 6)会停止。这相当于while ( ! (r1 == 6 || r2 == 6) )

答案 1 :(得分:1)

我留下了关于调试的评论,这将在未来帮助您解决这些错误。您需要能够跟踪程序的执行情况,以便开始说明它失败的原因。

原因是这一行:

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

如果r1为6且r2为4,则评估为false,并退出循环。

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

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

甚至更有启发性:

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