0

値 ( 202 cents) を入力すると、この金額が5 cents or 2 centsコインで表示されます。私のコードではすべて正常に動作しますが、出力は System.out ステートメントとして与えられ、それ自体がクラスになりますTwoCentFiveCent私がやりたいことは、クラスでキャプチャして表示できるように、コインreturnの数を増やすことです。5 cents2 centsTest

注: 以下のコードでは、2 セント硬貨と 5 セント硬貨の数がそのクラス自体から返されます (コンソールに表示/出力されます)。しかし、コードを変更して、これらのメソッド (TwoCentsおよびFiveCentsクラス内) がコインの量になるようにしたい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 に答える