我正在尝试用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
}
}
答案 0 :(得分:2)
你忘了在你的循环中重新滚动。另外,我使用do-while
和Random.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
}
}