【问题标题】:how can I make this coin flip simulation work based on user input? java eclipse如何根据用户输入使这个硬币翻转模拟工作?日食
【发布时间】:2014-03-13 08:59:14
【问题描述】:

我有这段代码,它允许我模拟抛硬币,0 是正面,1 是反面,或者任何你想解释的。当您运行程序时,它会随机生成(在本例中)两次抛硬币的 10 种组合。我想做的是修改这个程序,让用户可以询问投掷多少次硬币,然后显示硬币结果,然后提示他再次翻转。

public class Dice {
    public static void main(String[] args)
    {
        for (int i = 0; i <= 10; i++)
        {
            int benito1=(int)(Math.random()*2);
            int benito2=(int)(Math.random()*2);
            System.out.println(benito1 + " " +benito2);
        }
        System.out.println();
    }
}

【问题讨论】:

  • 使用 Scanner 或 BufferedReader 类进行用户输入..;)

标签: java eclipse loops random simulation


【解决方案1】:

类似这样的事情:

public static void main(String[] args) {
        toss();
        System.out.println();
    }

    private static void toss() {
        Scanner get = new Scanner(System.in);
        System.out.println("Enter the limit ...");
        int limit = get.nextInt();
        for (int i = 0; i < limit; i++) {
            int benito1 = (int) (Math.random() * 2);
            int benito2 = (int) (Math.random() * 2);
            System.out.println(benito1 + " " + benito2);
        }
        System.out.println("would you like to continue>");
        String ans = get.next();
        if(ans.equalsIgnoreCase("y") || ans.equalsIgnoreCase("yes")) {
            toss();
        }

    }

【讨论】:

    【解决方案2】:

    取决于你是否想要一种 UI。您可以轻松创建询问用户值并显示结果的消息框。一个示例可能如下所示:

        boolean repeat = true;
        while (repeat) {
            String strTosses = JOptionPane.showInputDialog(null, "Please enter number of coin tosses", 10);
            int tosses;
            try {
                tosses = Integer.parseInt(strTosses);
            }
            catch (NumberFormatException ex) {
                continue;
            }
    
            for (int i = 0; i <= tosses; i++) {
                int benito1 = (int)(Math.random() * 2);
                int benito2 = (int)(Math.random() * 2);
                System.out.println(benito1 + " " + benito2);
            }
    
            int again = JOptionPane.showConfirmDialog(null, "Do you want to try again", "Try again", JOptionPane.YES_NO_OPTION);
            if (again == JOptionPane.NO_OPTION) {
                repeat = false;
            }
        }
    

    如果输入的值不是数字,Integer.parseInt() 可能会抛出 NumberFormatException。该程序将捕获错误并重试。

    【讨论】:

      【解决方案3】:
          public class Dice {
          public static void main(String[] args)
          {
          int count = 0;
          System.out.println("Enter The No Of Times : ");
          try
          {
               count = Integer.ParseInt((new BufferedReader(new InputStreamReader(System.in)).readLine());
          for (int i = 0; i <= count; i++)
          {
          int benito1=(int)(Math.random()*2);
              int benito2=(int)(Math.random()*2);
          System.out.println(benito1 + " " +benito2);
          }
          System.out.println();
          }
      }
      

      Math.random()*2 的替代方法是,

       Random rand = new random();
       int benito1 = rand.nextInt(2);
       int benito2 = rand.nextInt(2);
      

      【讨论】:

        【解决方案4】:

        使用Scanner 从控制台获取输入。一个简单的例子在这里:

        import java.util.Scanner;
        public class Dice {
        
            public static void main(String[] args) {
        
                Scanner scanner = new Scanner(System.in);
                while(true) {
        
                    System.out.println("Enter a value : ");
                    int n = scanner.nextInt();
                    if(n == 0) {
                        break;
                    }
                    for (int i = 0; i < n; i++) {
                        int benito1 = (int) (Math.random() * 2);
                        int benito2 = (int) (Math.random() * 2);
                        System.out.println(benito1 + " " + benito2);
                    }
                }
            }
        }
        

        【讨论】:

          【解决方案5】:

          类似这样的:

          Scanner sc = new Scanner(System.in);
          System.out.prinltn("Please enter a number");
          int input = sc.nextInt(); 
          while(input-->0)
             {
                  int benito1=(int)(Math.random()*2);
                        int benito2=(int)(Math.random()*2);
                        System.out.println(benito1 + " " +benito2);
                      }
          

          【讨论】:

            【解决方案6】:

            你可以这样做

            public class Dice {
                public static void main(String[] args)
                {
            
                    Scanner scanner = new Scanner(System.in);
                    System.out.println("Enter a value : ");
                    int numberOfTimes = scanner.nextInt();
                    for (int i = 0; i <= numberOfTimes; i++)
                    {
                        int benito1=(int)(Math.random()*2);
                        int benito2=(int)(Math.random()*2);
                        System.out.println(benito1 + " " +benito2);
                    }
                    System.out.println();
                }
            }
            

            【讨论】:

              【解决方案7】:

              您可以使用 Scanner 类来获取用户输入,如下所示:

                 Scanner scan = new Scanner(System.in);
              
                  int count = scan.nextInt(); 
                  for (int i = 0; i < count ; i++)
                          {
                            int benito1=(int)(Math.random()*2);
                            int benito2=(int)(Math.random()*2);
                            System.out.println(benito1 + " " +benito2);
                          }
              

              【讨论】:

                猜你喜欢
                • 2018-07-27
                • 2010-10-03
                • 2020-05-14
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2020-07-17
                • 1970-01-01
                相关资源
                最近更新 更多