我试图同时制作三个骰子,直到它们落在6号上

时间:2017-10-09 00:23:00

标签: java arrays

我的节目应该在所有三个骰子全部出现之前打印卷数。

这是我到目前为止所拥有的,但我得到的输出是1的小数字我不认为它可能需要1次才能滚动所有三个六。我期待更大的数字。

Random rand = new Random();
    int numOfRolls = 0; //starts at zero for the number of rolls
    int x;
    int y;
    int z;
    do {
      numOfRolls++;
      x = rand.nextInt(6) + 1;
      y = rand.nextInt(6) + 1;
      z = rand.nextInt(6) + 1;
    } while (x == 6 || y == 6 || z == 6);
    System.out.println(numOfRolls);

4 个答案:

答案 0 :(得分:2)

while条件更改为:

while (x !=6 || y != 6 || z != 6)

这将导致循环继续,直到所有三个值都为6。

答案 1 :(得分:1)

使用或将告诉你滚动的数量,直到三个整数中的一个落在6上。此外,你希望程序一旦落在三个6上就停止,所以将==切换到!=。

x != 6 && y != 6 && z != 6

答案 2 :(得分:1)

逻辑条件必须是:

while(x != 6 || y != 6 || z != 6)

因为你需要重复循环,直到所有三个都不是6

示例:

Random rand = new Random();
int numOfRolls = 0; //starts at zero for the number of rolls
int x;
int y;
int z;
do {
  numOfRolls++;
  x = rand.nextInt(6) + 1;
  y = rand.nextInt(6) + 1;
  z = rand.nextInt(6) + 1;
} while (x != 6 || y != 6 || z != 6);
System.out.println(numOfRolls);

答案 3 :(得分:0)

Psudeo-code中的逻辑

如果所有三个骰子都没有滚动的东西,你希望它继续下去。其他人已经注意到它但我会在psudeo代码中拼写逻辑,所以它应该更清楚:

        // Do While:
        // firstDie is not 6 AND secondDie is not 6 AND thirdDie is not 6
        // if firstDie == 6 and secondDie == 6 and thirdDie == 6 then you should stop looping

实际代码

        // so transforming the above logic into code - change the while statement to something like this:
        while (x != 6 || y != 6 || z != 6)

        // or you can break OUT of the loop when all three die land six. something like this:
        while (true) 
        {
            // all the rest of the code setting up the values
            if ( x == 6 && y == 6 && z == 6) break;
        }