用循环计数字符串

时间:2012-11-28 02:01:46

标签: java

所以我写了一个名为Coin的课程,其中包括翻转硬币并识别其头部或尾部的方法。它基本上是一个随机真或假的布尔值,真实是头,假是尾。

我现在正在编写一个使用此Coin类中的方法的类。我需要投掷硬币的方法,识别它的真或假,然后告诉我它是头还是尾。我需要这堂课做的是将硬币翻转100万次并告诉我它的头数,尾巴的次数以及头部翻转的百分比。我在循环方面不是很有经验,所以我的主要努力是我在返回头部或尾部的硬币类中的方法返回一个字符串,我不知道如何计算字符串" head&#34多少次;退回。

这是班级硬币。我意识到这里有许多不相关的方法,但我也将它用于其他类。我也无法改变这门课程。

import java.util.Random;

public class Coin
{
    private int m_year = 0;
    private int m_value = 0;
    private boolean m_isHeads = true;

    public Coin (int year, int value)
    {
        m_year = year;
        m_value = value;
    }

    public void toss()
    {
        Random generator = new Random();
        m_isHeads = generator.nextBoolean();
    }

    public void print()
    {
        System.out.println("Quarter Side Up = " + getSideUp());

    }

    public int getYear()
    {
        return m_year;
    }

    public int getValue()
    {
        return m_value;
    }

    public boolean isHeads()
    {
        return m_isHeads;
    }

    public String getSideUp()
    {
        if (m_isHeads)
        {
            return "Heads";
        }
        else
        {
            return "Tails";
        }
    }
}   

我意识到这是一个广泛的问题,但是非常感谢任何帮助或建议。

2 个答案:

答案 0 :(得分:1)

您可能希望使用getSideUp()而不是isHeads()。然后,只需使用这样的东西:

public class CoinCounter {
    public CoinCounter() {
        Coin c = new Coin(2012, 25);
        int headsTotal = 0;
        int tailsTotal = 0;
        for(int i=0;i<1000000;i++) {
            c.toss();
            if(c.isHeads())
                headsTotal++;
            else
                tailsTotal++;
        }

        System.out.println("Total Heads: "+headsTotal);
        System.out.println("Total Tails: "+tailsTotal);
        System.out.println("Percentage Heads: "+(100*(double)headsTotal/(double)tailsTotal)+"%");
    }
}

现在,您可以检查headsTotaltailsTotal,查看每方返回的投掷次数。

答案 1 :(得分:0)

好吧,我会把循环部分留给你。但是,假设您已进入该循环并且已经翻转了变量coin。您可以像这样进行字符串比较:

if (coin.getSideUp().equals("Heads"))
{
    ++numHeads;
}

你也可以跳过中间人并直接前往isHeads并询问。不需要字符串。

if (coin.isHeads())
{
    ++numHeads;
}