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

时间:2015-10-22 18:39:41

标签: java random dice

我对Java很陌生,所以我只想尝试一些东西..

我想知道,如何检查需要多少卷才能获得6个六分。 (的Yahtzee)

我已经尝试过使用&&&,但它并没有让我检查所有6个骰子,只是当它碰到前6个骰子时停止。

我尝试了类似的东西,但它没有成功......

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!");

任何人都可以帮忙解决问题吗?

3 个答案:

答案 0 :(得分:1)

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

这就是or进来的地方。你可以在第一个骰子上掷6,但是因为另一个条件是"或者die2!= 6"它评估为真,因为显然die2不等于6。只有当所有的模具都等于6时,环路才会断开,因为没有模具与6不同。

基本上,while循环像这样通过树,如果它只有一个是,它会继续,因为它需要所有的noes:die1 =!6?没有。是die2!= 6?不。是die3 =!6?是。红色标志。那好吧,我会再次循环。如果你使用and代替,那么循环会变得更加讨厌并且反向寻找是以继续循环循环并且首先打破no:是die1 =!6?是。是die2!= 6?好的,好的,你看!但等等,如果死3!= 6 ......?不,我不在乎。

希望你现在看到你逻辑上的缺陷。

答案 1 :(得分:0)

逻辑错误。您的条件会检查所有模具是否 6,并且只要一个是6,就会中断,所以rowBox { width:290px; display:inline-block; float:left; } 。你想要:dice1Not6 AND dice2Not6 AND ...。如果所有骰子为6,则此值仅评估为dice1Not6 OR dice2Not6 OR ...

在Java中:

false

答案 2 :(得分:0)

如果我理解你的问题,你就有6个人死了......你想知道必须制作多少卷,这样所有卷都会同时以6号结尾。

您可以这样做:

Index of /