2015-04-05 88 views
-2

註釋最初顯示toString()方法,但我想將其更改爲字符串構建器方法。我有幾個這些,但這是最簡單的一個。你可以看到我所嘗試過的。先謝謝你。使用StringBuilder而不是toString()

public StringBuilder toString() { 
    StringBuilder str = new StringBuilder(); 
    str.append("Data in Kennel " + name + " is:"); 
    //String results = "Data in Kennel " + name + " is:"; 

    for (Animal d : dogs) { 
     //results = results + d.toString() + "\n"; 
     str.append(d.toString() + "\n"); 
    } 

    return str; 
    //return result; 
} 
+0

你想用這種方法實現什麼? – Eran 2015-04-05 15:59:59

+0

該方法用於打印存儲在數組列表中的所有狗數據。 – 2015-04-05 16:01:35

+0

@robertM:您應該在發佈問題時指定確切的問題。這避免了我們必須猜測。 – 2015-04-05 16:02:18

回答

2

如果這是一個toString()覆蓋,甚至如果不是,那麼它必須返回一個字符串,而不是一個StringBuilder。否則它不是真正的覆蓋,它甚至不應該編譯,因爲方法簽名與Object的toString()相同,但是具有不同的返回類型。

相反,確保在方法體內部使用StringBuilder,但返回StringBuilder的toString()

例如,

@Override // this must return String 
public String toString() { 
    StringBuilder strBuilder = new StringBuilder(); 
    strBuilder.append("Data in Kennel " + name + " is:"); 

    for (Animal d : dogs) { 
     strBuilder.append(d.toString() + "\n"); 
    } 

    return strBuilder.toString(); 
} 
+1

我相信它應該是strBuilder.toString(); – CKing 2015-04-05 16:04:30

+1

@bot:敏銳的眼睛,謝謝! – 2015-04-05 16:05:07

+0

謝謝你完美的工作!如果我不清楚,我會對所有人表示歉意 – 2015-04-05 16:07:43

0

看來你正試圖使像Object'stoString()返回一個StringBuilder的方法。不要這樣做。使用StringBuilder,您可以使用toString()將其轉換爲String

StringBuilder strb = new StringBuilder("SampleString"); 
String str = strb.toString(); 
相關問題