gpt4 book ai didi

java - 遇到 || 问题和 &&

转载 作者:行者123 更新时间:2023-12-01 22:58:32 27 4
gpt4 key购买 nike

我是编程新手,想用 Java 制作一个掷骰子程序来执行。代码如下:

import java.math.*;
public class Dices {
public static int dice1=0;
public static int dice2=0;
public static int x;
public static void main(String args[]){
do {
x++;
dice1=(int) (Math.random()*6+1);
dice2=(int) (Math.random()*6+1);
System.out.println(dice1+", "+dice2);
} while(dice1 !=1 || dice2 !=1);
System.out.println("Finalthrow: "+dice1+", "+dice2);
System.out.println("Snake-Eyes after "+x+" tries.");
}
}

这种方式工作正常,但在我看来代码有问题。实际上应该是在 while 条件中。但如果我使用 && 它会在第一个骰子上掷出 1 时立即停止。我认为 && 表示“AND”,而 || 表示“OR”。所以实际上它的行为应该完全相反,还是我误解了某些东西?

最佳答案

关于Morgan's laws的一些了解可以在这里提供帮助。法律规定(抱歉语法很奇怪,但我认为信息很明确):

(!P) OR (!Q) == !(P AND Q)
(!P) AND (!Q) == !(P OR Q)

因此,当您在条件中使用 || (OR)

while(dice1 !=1 || dice2 !=1)

完全相同
while(!(dice1 == 1 && dice2 == 1))

所以它将循环直到两个骰子都1

另一方面,如果您使用 && (AND):

while(dice1 !=1 && dice2 !=1)

与此相同

while(!(dice1 == 1 || dice2 == 1))

所以这意味着它将循环直到一个或两个骰子为1

关于java - 遇到 || 问题和 &&,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23700287/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com