Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-AND运算符不工作_Java - Fatal编程技术网

Java-AND运算符不工作

Java-AND运算符不工作,java,Java,这里是新手, 我有两个变量,它们通过.random生成随机数。我希望它们继续滚动,直到两个变量同时生成两个不同的值。因此,我使用while循环&&来实现此目的。正如我所理解的,如果我错了,请纠正我,while((dicerolled 1!=5)&&(dicerolled 2!=4))这一行翻译为,继续滚动,直到dicerolled 1的值不等于5并且dicerolled 2不等于4。但如果任一变量与其值匹配(dicerolled 1=5或dicerolled 2=4),则程序结束。这不是&&应该

这里是新手,
我有两个变量,它们通过
.random
生成随机数。我希望它们继续滚动,直到两个变量同时生成两个不同的值。因此,我使用
while
循环
&&
来实现此目的。正如我所理解的,如果我错了,请纠正我,
while((dicerolled 1!=5)&&(dicerolled 2!=4))
这一行翻译为,继续滚动,直到
dicerolled 1
的值不等于5并且
dicerolled 2
不等于4。但如果任一变量与其值匹配(dicerolled 1=5dicerolled 2=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");
}
}

你的逻辑不正确。只要两个值不匹配,循环就会继续——只要一个值匹配,循环就会退出。我们可以颠倒您的逻辑来显示:

while (!(diceRolled1 == 5 || diceRolled2 == 4)) {
这在逻辑上等同于你所拥有的

你想要的是:

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

这表示“在任何变量没有所需值时继续”

您的逻辑不正确。只要两个值不匹配,循环就会继续——只要一个值匹配,循环就会退出。我们可以颠倒您的逻辑来显示:

while (!(diceRolled1 == 5 || diceRolled2 == 4)) {
这在逻辑上等同于你所拥有的

你想要的是:

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

这表示“在任何变量都没有所需值时继续”

您将得到所描述的逻辑结果,但这不是您所期望的结果。具体来说,当您的任一条件的计算结果为
false
时,逻辑值将不会计算为
true
。我想你想要

while (!(diceRolled1 == 5 && diceRolled2 == 4)) {
这是
,而
不是骰子1等于5骰子2等于4。然后,使用它也可以表示为

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

这意味着循环
,而
dice1不等于5dice2不等于4

你得到了你描述的合乎逻辑的结果,但这不是你所期望的。具体来说,当您的任一条件的计算结果为
false
时,逻辑值将不会计算为
true
。我想你想要

while (!(diceRolled1 == 5 && diceRolled2 == 4)) {
这是
,而
不是骰子1等于5骰子2等于4。然后,使用它也可以表示为

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

这意味着循环
,而
dice1不等于5dice2不等于4

是的,应该是。如果Dicerold为5或4,则程序应该结束,因为只要它不是4,也不是5,它就处于while循环中。如果只有值为4或5,则退出while循环。所以你的逻辑是错误的。对不起!:) 尝试:


是的,应该是。如果Dicerold为5或4,则程序应该结束,因为只要它不是4,也不是5,它就处于while循环中。如果只有值为4或5,则退出while循环。所以你的逻辑是错误的。对不起!:) 尝试:


while将执行该语句,直到条件为true为止。 在代码中,条件由(dicerolled 1!=5)&(dicerolled 2!=4)给出。 &&运算符要求所有操作数都为true。 鉴于此,当至少一个表达式为false时,循环将结束

要在程序生成5和4时完成程序,必须使用以下命令:


(!(dicerolled 1==5)和&(dicerolled 2==4))

同时执行语句,直到条件为真。 在代码中,条件由(dicerolled 1!=5)&(dicerolled 2!=4)给出。 &&运算符要求所有操作数都为true。 鉴于此,当至少一个表达式为false时,循环将结束

要在程序生成5和4时完成程序,必须使用以下命令:


(!(dicerolled 1==5)和&(dicerolled 2==4))

对不起,您的逻辑也不起作用(复制并粘贴了代码)。它的行为和我的一样。它不在这里。我试了很多次。但是非常感谢你的努力。真的很感激it@jalbal它与您选择的答案完全相同,那么这怎么不起作用,而另一个呢?好的,对不起,这是我的错误。我正在处理上述代码。抱歉,您的逻辑也不起作用(复制并粘贴了代码)。它的行为和我的一样。它不在这里。我试了很多次。但是非常感谢你的努力。真的很感激it@jalbal它与您选择的答案完全相同,那么这怎么不起作用,而另一个呢?好的,对不起,这是我的错误。我正在处理上述代码。道歉