枚举抛硬币程序卡住了



我正在尝试让这个抛硬币程序为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;
    }
  }
}

最新更新