2015-09-05 64 views
1

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


好的,所以我已经摆脱了所有的错误感谢大家的帮助!现在的问题是,当我运行代码时,循环只是继续下去(这是至少看起来像,因为它甚至不打印循环后的打印语句)我做错了什么?我的一部分想知道它是否不正确地继承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");   
    } 
} 
+0

你做得对。为镍和季度写类似的头部检查。在用while循环开始之前调用setter。 –

+0

这是什么语言?您应该将语言添加为其中一个标记,以便人们知道发生了什么。 –

+0

我很高兴听到我在正确的轨道上。这是问题的一部分,我不太清楚如何调用setter,然后自由使用它们。我会仔细看看的。 – Mrggg

回答

0

您还没有调用Setter方法。除非您打电话给他们,否则Dime,NickelQuarter的值将保持未初始化状态,因此您不会真正添加所需的值。所以考虑在开始循环之前调用它们。

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

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

,并从main()函数调用此方法是

quarter.setQuarter(25); 

另外,我假设你有headFlip1()的定义,headFlip2()headFlip3(),尽管它们不出现在片段中。

+0

好的我现在明白了,是否有特定的理由为何这样做?我是新来的java(把它作为一个类),它与我自学的python的一点点不同。是的,我的headFlip类是在它继承的不同类中定义的。他们是不同的布尔值,但我刚刚发现他们的帽子问题,我需要修复哈哈但是,谢谢你完全帮助e弄清楚如何让gets/sets正常工作! – Mrggg

+0

这样做,以便您可以为不同的对象设置不同的值。例如,如果您为不同国家/地区制作对象,则可以使用setter来设置镍的不同值。 –

0

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

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

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

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

total++一个, 例如刚刚递增总变量的值如果total = 0,那么总计++将其设置为1.

+1

感谢abhishek对这些编辑。我不知道如何在我的答案中添加代码片段。这是我的第一篇文章。 – akshayKhot