0

当我输入一个值 ( 202 cents) 时,它应该以5 cents or 2 cents硬币形式给我这个金额。在我的代码中一切正常,但是输出在它自己的类TwoCent中作为 System.out 语句给出。FiveCent我想要做的是return数量5 cents2 cents硬币,以便我可以在Test课堂上捕获并展示它。

注意:在下面的代码中,2 美分和 5 美分硬币的数量从它自己的类返回(显示/打印到控制台)。但我想修改代码,以便那些方法(在TwoCentsFiveCents类中)将return并且int可能与硬币的数量有关。我应该只能从Test类中获取这些值并显示。

   public abstract class Coin {
    protected Coin co;
    public abstract void finCoin(Money m);
    public void setnext(Coin c) {
        co = c;
    }
}

public class TwoCent extends Coin{

    @Override
    public void finCoin(Money m) {
        if(m.getChange()%2==0){
          System.out.PrintLn("Return "+ m.getChange/2);
    else {
        int remainngCoins=m.getChange()*((m.getChange/2)*2));
        m.setChange(remainngCoins);
        co.setnext(m);
    }
}


public class FiveCent extends Coin{

    @Override
    public void finCoin(Money m) {
        if(m.getChange()%5==0){
          System.out.PrintLn("Return "+ m.getChange/5);
    else {
        int remainngCoins=m.getChange()*((m.getChange/5)*5));
        m.setChange(remainngCoins);
        co.setnext(m);
    }
}

public class Test {
public void showcoin(){
Coin f = new FiveCent();
        Cash t = new TwoCent();

        f.setSuccessor(t);

        Money cr = new Money(200);
        f.finCoin(cr);
}
}
4

2 回答 2

1

您必须先添加返回类型才能让您的方法返回某些内容。

一个简单的例子:

public int getInteger(){

int i = 10;
return i;

// see the return type is int and 
// I am returning an integer value 10
}
于 2012-12-13T17:20:02.143 回答
1

有趣的是,抽象类 Coin 的定义已经描述了方法 finCoin(Money m) 必须返回一个 int。但是在这两个实现中(FiveCent 和 TwoCent)都没有返回这个值。

你要做的是用这样的返回替换 System.out.println 的东西:

代替

 @Override
public void finCoin(Money m) {
    if(m.getChange()%5==0){
      System.out.PrintLn("Return "+ m.getChange/5);
else {
    int remainngCoins=m.getChange()*((m.getChange/5)*5));
    m.setChange(remainngCoins);
    co.setnext(m);
}

** 你做 **

 @Override
public int finCoin(Money m) {   // VERY IMPORTANT replace void by int
    if(m.getChange()%5==0){
      // System.out.PrintLn("Return "+ m.getChange/5);
      return m.getChange/5;   // thats how you return a value and end this method call
    else {
      int remainngCoins=m.getChange()*((m.getChange/5)*5));
      m.setChange(remainngCoins);
      co.setnext(m);
    }
    return 0;   // this is just a guess but you MUST return something
}
于 2012-12-13T17:20:47.460 回答