代码之家  ›  专栏  ›  技术社区  ›  stev0104

java硬币投掷模拟器问题

  •  0
  • stev0104  · 技术社区  · 12 年前

    嗨,我正在为java做一个掷硬币模拟器,必须以某种方式完成。它必须有一个用于sideup的字符串,以保存由无参数构造函数生成的字符串“heads”或“tails”,投掷方法必须为空,并且必须有getsideup方法,然后我们必须运行硬币投掷20次,并显示头部和尾部的数量。。。我可以很容易地使用非void方法,只需返回结果,但绕过这个void和getsidup会让我发疯。 这是我目前所拥有的。

    import java.util.Random;
    public class coin {
        public static String sideUp;
    
        public static void toss() {
            Random rand = new Random();
            int sideup = rand.nextInt(2);
            if (sideup == 0) {
                sideUp = "heads";
            } else {
                sideUp = "tails";
            }
        }
    
        public static String getsideup() {
            System.out.println(sideUp);
            return sideUp;
        }
    
        public static void main(String[] args) {
            // coin coin = new coin();
            int hcount = 0;
            int tcount = 0;
            for (int i = 1; i <= 20; i++) {
                if (getsideup().equals("heads")) {
                    hcount++;
                } else {
                    tcount++;
                }
            }
            System.out.println("total heads = " + hcount + " total tails = " + tcount);
        }
    }
    

    我希望有人能告诉我我做错了什么,让我走上正确的方向。

    4 回复  |  直到 12 年前
        1
  •  1
  •   NESPowerGlove    12 年前

    您没有在循环开始时调用toss()。这需要为sideUp设置一个值,并且需要让sideUp更改每次掷骰。

        2
  •  0
  •   Dom    12 年前

    简单的解决方法是在if语句之前将thross放入for循环,但我看到这里可以做很多事情。首先,我将为Coin类添加一个构造函数,并将hcount和tcount添加到类变量中,并使head和tail常量:

    private String sideUp;
    private int hcount;
    private int tcount;
    private static final String HEADS = "Heads";
    private static final String Tails = "Tails";
    
    Coin()
    {
        this.sideUp = HEADS;
        this.hcount = 0;
        this.tcount = 0;
    }
    

    然后我会做一个检查投掷的方法:

    public  void checkToss()
    {
        if (getsideup().equals(HEADS)) 
            hcount++;
        else
            tcount++;
    }
    

    现在将toss()和checkCoin()方法添加到if语句之前的for循环中。应该是这样的:

    for (int i = 1; i <= 20; i++)
    {
        coin.toss(); 
        coin.checkToss();
    }
    

    我也会为头部计数和尾部计数做一个吸气器:

    public int getHeadsCount()
    {
        return this.hcount;
    }
    
    public int getTailsCount()
    {
        return this.tcount;
    }
    

    所有东西放在一起看起来像这样:

    import java.util.Random;
    public class Coin 
    {
        private  String sideUp;
        private int hcount;
        private int tcount;
        private static final String HEADS = "Heads";
        private static final String TAILS = "Tails";
    
        Coin()
        {
            this.sideUp = HEADS;
            this.hcount = 0;
            this.tcount = 0;
        }
    
        public void toss()
        {
            Random rand = new Random();
            int sideup = rand.nextInt(2);
            if (sideup == 0) 
                sideUp = HEADS;
            else 
                sideUp = TAILS;    
        }
    
        public String getsideup()
        {
            System.out.println(sideUp);
            return sideUp;
        }
    
        public void checkToss()
        {
        if (getsideup().equals(HEADS)) 
            this.hcount++;
        else
            this.tcount++;
        }
    
        public int getHeadsCount()
        {
            return this.hcount;
        }
    
        public int getTailsCount()
        {
            return this.tcount;
        }
    
        public static void main(String[] args)
        {
            Coin coin = new Coin();
            for (int i = 1; i <= 20; i++) 
            {
                coin.toss();
                coin.checkToss();
            }
            System.out.println("Total Heads = " + coin.getHeadsCount() + " Total Tails = " + coin.getTailsCount());
        }
    }
    
        3
  •  -1
  •   javawocky    12 年前
    import java.util.Random;
    public class coin
    {
    public static String sideUp;
    public int hcount=0;
    public int tcount=0;
    
    public static void toss()
         {
            Random rand = new Random();
            int sideup = rand.nextInt(2);
            if (sideup == 0)
                {
                    sideUp = "heads";
                    hcount++;
                }
                else 
                {
                    sideUp  = "tails";
                    tcount++;
                } 
          }       
    
      public static void main(String[] args)
      {
        for(int i=0;i<20;i++)
        {toss();}
        System.out.println("total heads = " + hcount + " total tails = " + tcount);
       }
    }
    
        4
  •  -1
  •   Hirak    12 年前
    for(int i = 1; i <= 20; i++) 
        {
            toss();
          if (getsideup().equals("heads")) 
          {
            hcount++;
          } else 
          {
            tcount++;
          }
        }