getter,setter和loops

时间:2015-09-05 05:57:43

标签: java loops get set

我有这个程序,我一直致力于一个翻转硬币并计算它落在的头/尾数量的类。我终于让它正常工作,但是我需要实现get和set。我有3个硬币,镍,四分之一和一角硬币。我必须使用get set为它们赋值并创建一个循环,重复翻转三个硬币。每次它落在头上时,它会将特定硬币的值加到一个池中(总计),并且当它变得等于或大于一美元时,循环应该结束。这是我的硬币类,它继承了另一个类的方法(所有工作)。问题是,一旦我得到并将值设置为我的私有整数,我如何在我创建的while循环中自由使用它们,所以我也可以添加它们总数? (我为不完整的循环道歉,我只是变得非常迷茫)提前感谢任何帮助!

好的,所以我已经摆脱了所有的错误,感谢大家的帮助!现在的问题是,当我运行代码时,循环只是继续(这似乎至少是这样,因为它甚至不在循环后打印print语句)我做错了什么?我的一部分想知道它是否没有正确地继承flip方法,但它是从已经在另一个程序中使用它的类继承它并且它工作正常。

public class Coin extends GenericCoin {

    private int Dime;
    private int Nickel;
    private int Quarter;

    public Coin() {
        // TODO Auto-generated constructor stub
    }

    public int getDime() {
        return Dime;
    }

    public void setDime(int dime) {
        this.Dime = 10;
    }

    public int getNickel() {
        return Nickel;
    }

    public void setNickel(int nickel) {
        Nickel = 5;
    }

    public int getQuarter() {
        return Quarter;
    }

    public void setQuarter(int quarter) {
        Quarter = 25;
    }

    public static void main(String[] args) {
        int total = 0;

        Coin dime = new Coin();
        Coin nickel = new Coin();
        Coin quarter = new Coin();

        int d = dime.getDime();
        int n = nickel.getNickel();
        int q = quarter.getQuarter();


        while(total < 100) {//loop that will flip the 3 coins and add to total
            dime.flip();

            if(dime.headFlip1()) {
                total = total + d;
            }

            nickel.flip();
            if(nickel.headFlip2()) {
                total = total + n;
            }
            quarter.flip();
            if(quarter.headFlip3()){
                total = total + q;
            }
        }

        System.out.println(total + ".00");          
    }
}

2 个答案:

答案 0 :(得分:0)

首先,你应该在每个硬币上调用setter方法,这将初始化它们。默认情况下,类的实例变量的值为0(对于整数)。或者更好的是,如果要对对象进行硬编码,请使用构造函数直接初始化对象。

其次,total++ Dime语法错误。 total++本身就是一个完整的句子,应以分号结尾,例如。总++;

您想要将Dime的特定值添加到总计中。然后你应该做

total = total + CoinObject.getDime(); or 
total += CoinObject.getDime();

total++只是将total变量的值增加1, 例如if total = 0,然后总计++将其设置为1。

答案 1 :(得分:0)

您尚未调用Setter方法。除非您调用它们,否则DimeNickelQuarter的值将保持未初始化状态,因此您无法真正添加所需的值。所以考虑在开始循环之前调用它们。

其次, setter 函数用于设置传递给它的值。例如,当您将quarter传递给setQuarter()时,通常的做法是使用变量Quarter中的值初始化成员变量quarter。实际上,你的setter函数将是这样的:

public void setQuarter(int quarter) {
    Quarter = quarter;
}

并且main()函数对此方法的调用将是

quarter.setQuarter(25);

另外,我假设您有headFlip1()headFlip2()headFlip3()的定义,但它们不会出现在代码段中。