所以我想要做的是打印出这个数组。
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[]硬币)的方法中,但是在同一个类中。
我不确定我是否问对了,如果你们需要任何细节,请问。
发布于 2013-09-23 15:56:03
用完整的示例编辑的
你的硬币课应该是这样的:
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-23 15:53:52
在硬币类中,将toString()重写为如下所示:
public String toString()
{
return this.coinName+ " " + this.year;
}要打印数组内容,您可以这样做
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();
}发布于 2013-09-23 16:15:42
我猜CoinName是Enum,所以您的Coin对象应该覆盖toString方法
要确保正确覆盖它(因此如果不正确,代码将不会编译),您必须用@重写对方法进行注释。
方法可以如下所示:
@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]... ]https://stackoverflow.com/questions/18963503
复制相似问题