getter、setter 和循环

getters, setters, and loops

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


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

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");          
    }
}

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

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

您想将 Dime 的特定值添加到总数中。那你应该做

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

total++ 只是将 total 变量的值加一, 例如如果 total = 0,则执行 total++ 将其设置为 1。

您还没有调用 Setter 方法。除非您调用它们,否则 DimeNickelQuarter 的值将保持未初始化状态,因此您不会真正添加您想要的值。因此,请考虑在开始循环之前调用它们。

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

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

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

quarter.setQuarter(25);

此外,我假设您有 headFlip1()headFlip2()headFlip3() 的定义,尽管它们没有出现在代码段中。