0

だから、私がやろうとしているのは、この配列を印刷することです。

    coins[0] = new Coin(CoinName.PENNY, 2011);
    coins[1] = new Coin(CoinName.DIME, 1952);
    coins[2] = new Coin(CoinName.DOLLAR, 1999);
    coins[3] = new Coin(CoinName.NICKEL, 2004);
    coins[4] = new Coin(CoinName.DIME, 1952);
    coins[5] = new Coin(CoinName.DOLLAR, 1945);
    coins[6] = new Coin(CoinName.PENNY, 2011);
    coins[7] = new Coin(CoinName.QUARTER, 1961);
    coins[8] = new Coin(CoinName.NICKEL, 1983);
    coins[9] = new Coin(CoinName.FIFTY_CENT, 1963);

Arrays.toString メソッドを使用できることはわかっていますが、今回は使用できません。という名前の独自のメソッドを使用する必要があります

public String toString()

これは、完全にセットアップする必要がある方法であり、その方法の説明はコメントにあります。

//the standard toString method that returns a String listing all the coins in the jar,   in their current order
public String toString()
{
    return ???;

}

配列の初期化は CoinJar(Coin[] coins) というメソッドにありますが、同じクラス内にあります。

この質問が正しいかどうかわかりません。詳細が必要な場合は、お尋ねください。

4

4 に答える 4

4

完全な例で編集

Coin クラスは次のようになります。

public class Coin {
    private CoinName coinName;
    private int year;

    public Coin(CoinName coinName, int year) {
        this.coinName = coinName;
        this.year = year;
    }

    @Override
    public String toString() {  
        return coinName + " " + year;
    }
}

何を入力すればよいかわからないメソッドがそこにあります。投稿している回答をテストするために、このクラスを作成しました。

public class CoinContainer {
    private Coin[] coins;

    public CoinContainer() {  
        coins = new Coin[10];

        coins[0] = new Coin(CoinName.PENNY, 2011);
        coins[1] = new Coin(CoinName.DIME, 1952);
        coins[2] = new Coin(CoinName.DOLLAR, 1999);
        coins[3] = new Coin(CoinName.NICKEL, 2004);
        coins[4] = new Coin(CoinName.DIME, 1952);
        coins[5] = new Coin(CoinName.DOLLAR, 1945);
        coins[6] = new Coin(CoinName.PENNY, 2011);
        coins[7] = new Coin(CoinName.QUARTER, 1961);
        coins[8] = new Coin(CoinName.NICKEL, 1983);
        coins[9] = new Coin(CoinName.FIFTY_CENT, 1963);
    }

    @Override
    public String toString() {
        String myString = "";

        for(Coin coin : coins) {
            myString += coin + "\n";
        }

        return myString;
    }

    public static void main(String[] args) {
        CoinContainer coinContainer = new CoinContainer();

        System.out.println(coinContainer);
    }
}

最後に、完全な答えを得るために、CoinName Enum はおそらく次のようになります。

public enum CoinName {
    PENNY,
    DIME,
    DOLLAR,
    NICKEL,
    QUARTER,
    FIFTY_CENT
}

私はそれをテストし、すべてが動作します。これが私が得ている出力です:

PENNY 2011
DIME 1952
DOLLAR 1999
NICKEL 2004
DIME 1952
DOLLAR 1945
PENNY 2011
QUARTER 1961
NICKEL 1983
FIFTY_CENT 1963
于 2013-09-23T15:56:03.960 に答える
0

CoinName は Enum だと思いますので、Coin オブジェクトは toString メソッドをオーバーライドする必要があります

確実に正しくオーバーライドするには (そうしないとコードがコンパイルされないため)、@Override でメソッドに注釈を付ける必要があります。

メソッドは次のようになります。

    @Override
    public String toString() {
        return new StringBuilder("[Name: ")
                .append(name.getName())
                .append(", Year: ")
                .append(year)
                .append("]")
                .toString();
    }

これにより、適切な出力が出力されます。

[[Name: PENNY, Year: 2011], [Name: DIME, Year: 1952]... ]
于 2013-09-23T16:15:42.630 に答える