首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阵列,toString?

阵列,toString?
EN

Stack Overflow用户
提问于 2013-09-23 15:45:56
回答 4查看 385关注 0票数 0

所以我想要做的是打印出这个数组。

代码语言:javascript
复制
    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方法,但这次我不能使用它。我必须使用我自己的方法

代码语言:javascript
复制
public String toString()

这就是需要完全设置的方法,以及如何做的说明在注释中。

代码语言:javascript
复制
//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[]硬币)的方法中,但是在同一个类中。

我不确定我是否问对了,如果你们需要任何细节,请问。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-09-23 15:56:03

用完整的示例编辑的

你的硬币课应该是这样的:

代码语言:javascript
复制
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;
    }
}

你不知道该放什么的方法在里面,我做了这个类来测试我发布的答案:

代码语言:javascript
复制
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可能如下所示:

代码语言:javascript
复制
public enum CoinName {
    PENNY,
    DIME,
    DOLLAR,
    NICKEL,
    QUARTER,
    FIFTY_CENT
}

我测试过了一切都正常。下面是我得到的输出:

代码语言:javascript
复制
PENNY 2011
DIME 1952
DOLLAR 1999
NICKEL 2004
DIME 1952
DOLLAR 1945
PENNY 2011
QUARTER 1961
NICKEL 1983
FIFTY_CENT 1963
票数 4
EN

Stack Overflow用户

发布于 2013-09-23 15:53:52

在硬币类中,将toString()重写为如下所示:

代码语言:javascript
复制
public String toString()
{
    return this.coinName+ " " + this.year;
}

要打印数组内容,您可以这样做

代码语言:javascript
复制
public String toString()
{
    StringBuffer st = new StringBuffer();
    // or you could use this too...    StringBuilder st = new StringBuilder(); in a performance intensive system, where there is no need of synchronization this would be a little better.
    for(int index = 0; index < coins.length; index++ )
    {
        st.append("Coin "+index+" : "+coins[index].toString());
    }  
    return st.toString(); 

}
票数 0
EN

Stack Overflow用户

发布于 2013-09-23 16:15:42

我猜CoinName是Enum,所以您的Coin对象应该覆盖toString方法

要确保正确覆盖它(因此如果不正确,代码将不会编译),您必须用@重写对方法进行注释。

方法可以如下所示:

代码语言:javascript
复制
    @Override
    public String toString() {
        return new StringBuilder("[Name: ")
                .append(name.getName())
                .append(", Year: ")
                .append(year)
                .append("]")
                .toString();
    }

这将打印出很好的输出:

代码语言:javascript
复制
[[Name: PENNY, Year: 2011], [Name: DIME, Year: 1952]... ]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18963503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档