骰子滚动循环

时间:2014-12-10 06:55:21

标签: java

我正在尝试用java创建一个方法,其中包括滚动三个骰子的模拟,并计算三个六面骰子必须滚动的次数,直到显示的值全部不同。我尝试使用while循环创建它,但它似乎甚至没有运行,尽管没有任何编译器错误。这是我到目前为止的代码:

public class Rollin {
    public static void diceGenerator() {
        int numOfRolls = 0; //starts at zero for the number of rolls
        int x = ((int)(Math.random() * 6 +1)); //simulation of three dice
        int y = ((int)(Math.random() * 6 +1));
        int z = ((int)(Math.random() * 6 +1));
        while(!(x != y && y != z && x != z)) { // to check if the dice have any similar numbers
            numOfRolls++; // counting the number of rolls
        }
        System.out.println(numOfRolls); //prints the number of rolls
    }
}

3 个答案:

答案 0 :(得分:2)

你忘了在你的循环中重新滚动。另外,我使用do-whileRandom.nextInt(int)并将De Morgan's laws应用于您的测试。像

这样的东西
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 == y || y == z || x == z);

答案 1 :(得分:0)

您没有主要方法。为简单起见,main方法可以解释为静态方法,与任何对象无关,这是Java程序运行时首先要触发的。它的工作方式与程序中的任何其他方法类似,这意味着您可以按照自己喜欢的方式进行编码。

从主要方法中解雇您的方法,例如:

public static void main(String[] args) {
    diceGenerator();
}

此外,您的代码不在任何类型的循环中,因此骰子滚动只会执行一次。

答案 2 :(得分:0)

嗯,你没有主要方法。你需要在Rollin类中添加一个main方法(假设Rollin类是你正在编译/运行的唯一类),并从中调用diceGenerator。

public class Rollin
{
  public static void main (String[] args)
  {
      diceGenerator();
  }

  public static void diceGenerator()
  {
  int numOfRolls = 0; //starts at zero for the number of rolls
  int x = ((int)(Math.random() * 6 +1)); //simulation of three dice
  int y = ((int)(Math.random() * 6 +1));
  int z = ((int)(Math.random() * 6 +1));
  while(!(x != y && y != z && x != z))// to check if the dice have any similar numbers
  {
        numOfRolls++; // counting the number of rolls
  }
  System.out.println(numOfRolls); //prints the number of rolls 
  } 
}