JAVA检查多个数字是否相同?

JAVA检查多个数字是否相同?,java,random,dice,Java,Random,Dice,我对Java非常陌生,所以我只是在尝试一些东西 我想弄清楚,如何检查需要多少卷才能得到6个6。(雅特泽) 我尝试使用&&,但它不允许我检查所有6个骰子,它只是在击中第一个6'er时停止 我试过这样的方法,但没有成功 while (die.getDie1() != 6 && die.getDie2() != 6 && die.getDie3() != 6 && die.getDie4() != 6 && die

我对Java非常陌生,所以我只是在尝试一些东西

我想弄清楚,如何检查需要多少卷才能得到6个6。(雅特泽)

我尝试使用&&,但它不允许我检查所有6个骰子,它只是在击中第一个6'er时停止

我试过这样的方法,但没有成功

while (die.getDie1() != 6 && die.getDie2() != 6 && die.getDie3() != 6 && die.getDie4() != 6
            && die.getDie5() != 6 && die.getDie6() != 6) {

        die.roll(6);

    }

    System.out.println("It took " + die.getCount() + " rolls to get a yahtzee!");

有人能帮忙解决吗

逻辑是错误的。您的条件检查是否所有的模具都不是6,并且在一个模具为6时立即中断,因此
dice1Not6和dice2Not6以及…
。您需要:
dice1Not6或dice2Not6或…
。如果所有骰子都是6,则该值将仅计算为
false

在Java中:

while(die.getDie1() != 6 || die.getDie2() != 6 || ...){

如果我没弄错你的问题,你有6个骰子,你想知道需要做多少个骰子,这样所有的骰子都能同时得到数字6

您可以这样做:

while( true ) // Run forever, until all 6 dies have the same number '6'.
{
    if( die.getDie1() == 6 && die.getDie2() == 6 && die.getDie3() == 6 && die.getDie4() == 6
            && die.getDie5() == 6 && die.getDie6() == 6) 
{
    System.out.println( "Print the count here" );
    break;
}

 die.roll(6); 

}

在这种情况下,您需要使用逻辑
(java标记是
|
)。因为如果使用
,则只有当所有数字同时不同于6时,该条件才为真。如果你掷一个六,循环就会中断,因为不再所有的模具都与六不同。您需要消除任何辊在同一时间不同于6的可能性

这就是
的作用所在。你可以在第一个骰子上掷6,但因为另一个条件是“或骰子2!=6”,它的计算结果为真,因为显然骰子2不等于6。只有当所有模具都等于6时,回路才会断开,因为没有模具与6不同

基本上while循环是这样通过树的,如果它只得到一个yes,它将继续,因为它需要所有的noe:Is die1=!6.不,是第二个=6.不,是die3=!6.对红旗。好吧,我再循环一次。如果改为使用
,则循环会变得更加复杂,并反向寻找“是”以继续循环循环,并断开“第一个否”:Is die1=!6.对这是第二个=6.不,好的,再见!但是等等,如果我死了怎么办=6.不,我不在乎


希望您现在能看到逻辑中的缺陷。

您需要使用| | not&&,因为即使是非6中的其中一个数字,您也需要重复循环。与代码无关,但您只掷5个骰子,而“yahtzee”是任何五种类型;不必是六。哦,天哪!真不敢相信我居然没想到。。我太专注于&&了,以至于忘了| | |…它现在可以工作了。。非常感谢悉达多