我的程序需要抛出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.");
}
}
答案 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))