小编典典

Java-AND运算符不起作用

java

在这里,
我有两个变量,它们通过生成随机数.Random。我希望它们继续滚动,直到两个变量同时生成两个不同的值。因此,我为此使用while循环&&。正如我也明白了,请纠正我,如果我错了,行while ((diceRolled1 != 5) && (diceRolled2 != 4))意为,不断翻滚,直到值diceRolled1 不等于5
diceRolled2 不等于4 。但是,如果其中一个变量与其值匹配(diceRolled1 = 5 diceRolled2
= 4),则程序结束。这不是&&应该做什么,对吗?我已经运行了大约10次的代码,但是没有一次同时生成5和4。

我也在==两侧和两侧尝试过,但是在那种情况下,该程序根本没有运行,也没有给出任何错误。

您的帮助将不胜感激。谢谢

import java.util.Random;
import static java.lang.System.out;

public class DiceRoller {
public static void main(String[] args) {
    Random dice1 = new Random();
    Random dice2 = new Random();        //Removing this doesn't work either

    int diceRolled1 = 0;
    int diceRolled2 = 0;

    while ((diceRolled1 != 5) && (diceRolled2 != 4)) { //& didn't work either 
        diceRolled1 = dice1.nextInt(6) + 1;
        diceRolled2 = dice2.nextInt(6) + 1;
        out.println(diceRolled1 + " " + diceRolled2);
    }
    out.println("Program ends");
}
}

阅读 357

收藏
2020-11-30

共1个答案

小编典典

您正在获得描述的逻辑结果,但这并不是您所期望的。具体来说,当您的任何一个条件的结果为false逻辑值且不为时true。我想你想要

while (!(diceRolled1 == 5 && diceRolled2 == 4)) {

这是while 不是 dice1等于5
dice2等于4,然后使用德摩根定律,可能也可以表示为

while (diceRolled1 != 5 || diceRolled2 != 4) {

这意味着 循环 while dice1不等于5 dice2不等于4。

2020-11-30