JAVA检查多个数字是否相同?
我对Java非常陌生,所以我只是在尝试一些东西 我想弄清楚,如何检查需要多少卷才能得到6个6。(雅特泽) 我尝试使用&&,但它不允许我检查所有6个骰子,它只是在击中第一个6'er时停止 我试过这样的方法,但没有成功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
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”是任何五种类型;不必是六。哦,天哪!真不敢相信我居然没想到。。我太专注于&&了,以至于忘了| | |…它现在可以工作了。。非常感谢悉达多