我正在尝试让这个抛硬币程序为Java工作。我仍然很新,我很确定我已经搞砸了一堆。谁能看一看?无法弄清楚如何让我的开关保持循环,直到用户输入 0 停止抛硬币:
主要目标是询问用户有多少次翻转和出放多少次正面和反面翻转。然后问他们是否要继续翻转并将这些翻转添加到已经完成的翻转中,我必须使用 ENUM 来做......
import java.util.Random;
import java.util.Scanner;
public class CoinTossing {
private enum Coin { HEADS, TAILS };
private static final Random randomNumbers = new Random();
private static final int HEADS = 1;
private static final int TAILS = 2;
public static void main(String[] args)
{
Scanner input = new Scanner (System.in);
int quantity = 0;
int headSide = 0;
int tailsSide = 0;
System.out.println("How many times would you like to flip the coin? Enter 0 to end.");
int flipNumber = input.nextInt();
while (flipNumber != 0)
quantity = quantity + flipNumber;
for(int x=1; x<=quantity; ++x);
switch (Flip(null))
{
case HEADS:
headSide++;
break;
case TAILS:
tailsSide++;
break;
}
if (flipNumber == 0)
System.out.println("Your Number of flips is" + HEADS +TAILS);
}
private static int Flip(Random randomNumber) {
int toss;
toss = 1+ randomNumber.nextInt(2);
return toss;
}
}
while (flipNumber != 0)
quantity = quantity + flipNumber;
这个循环永远不会中断。没有大括号,这是一个单行循环,相当于
while (flipNumber != 0)
{
quantity = quantity + flipNumber;
}
显然,如果 flipNumber 不为 0,则此循环将永远运行。
据我所知,您实际上并没有发送任何类型的随机数生成器,因为您传入的参数是null
。我建议实例化它,然后尝试将其传入。
在我的头顶上,添加这一行: Random random = new Random();
,然后将开关更改为 switch (Flip(random))
可能会解决您的问题。
您的 while 循环在 quantity = quantity + flipNumber;
之外没有范围。如果您打算让while
循环包含for
循环,请确保包含大括号。
public class CoinTossing {
private enum Coin { HEADS, TAILS }
private static final Random random = new Random();
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int headSide = 0;
int tailsSide = 0;
System.out.println("How many times would you like to flip the coin? Enter 0 to end.");
int flipNumber;
while ((flipNumber = input.nextInt()) != 0) {
for (int x = 0; x <= flipNumber; x++) {
switch (flip()) {
case HEADS:
headSide++;
break;
case TAILS:
tailsSide++;
break;
}
}
System.out.printf("Heads: %d Tails: %dn", headSide, tailsSide);
}
System.out.println("Your number of flips is " + (headSide + tailsSide));
}
private static Coin flip() {
if (random.nextBoolean()) {
return Coin.HEADS;
} else {
return Coin.TAILS;
}
}
}