在这里, 我有两个变量,它们通过生成随机数.Random。我希望它们继续滚动,直到两个变量同时生成两个不同的值。因此,我为此使用while循环&&。正如我也明白了,请纠正我,如果我错了,行while ((diceRolled1 != 5) && (diceRolled2 != 4))意为,不断翻滚,直到值diceRolled1 不等于5 和 diceRolled2 不等于4 。但是,如果其中一个变量与其值匹配(diceRolled1 = 5 或 diceRolled2 = 4),则程序结束。这不是&&应该做什么,对吗?我已经运行了大约10次的代码,但是没有一次同时生成5和4。
.Random
while
&&
while ((diceRolled1 != 5) && (diceRolled2 != 4))
diceRolled1
diceRolled2
我也在==两侧和两侧尝试过,但是在那种情况下,该程序根本没有运行,也没有给出任何错误。
==
您的帮助将不胜感激。谢谢
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"); } }
您正在获得描述的逻辑结果,但这并不是您所期望的。具体来说,当您的任何一个条件的结果为false逻辑值且不为时true。我想你想要
false
true
while (!(diceRolled1 == 5 && diceRolled2 == 4)) {
这是while 不是 dice1等于5 和 dice2等于4,然后使用德摩根定律,可能也可以表示为
while (diceRolled1 != 5 || diceRolled2 != 4) {
这意味着 循环 while dice1不等于5 或 dice2不等于4。