2016-05-06 75 views
0

問題:如何讓我的字符串是這樣的,有(字符串構建)而不是此的ToString - 格式化(字符串構建)

什麼是應該像這樣:

「刺客信條四:黑旗」,對發佈:2013年11月29日

「光明之子」,在發行日期:01 2014年

「龍騰世紀:宗教裁判所」,對發佈:12月18日,2014

我知道應該使用某種形式的StringBuilder,但是我不知道如何格式化它。正如我的遊戲打印成:

礦的樣子:

[「刺客信條四:黑旗」,對發佈:2013年11月29日「光明之子」,對發行:01 2014 「龍騰世紀:宗教裁判所」,對發佈:二○一四年十二月一十八日]

下面是我的代碼剪斷,這其中的日期都出現細微只是他們沒有被分隔成了多行

@Override 
public String toString() { 
    DateFormat date = new SimpleDateFormat("MMM dd, yyyy"); 
     return("\"" + game + "\"" + ", " + "released on: " + date.format(released.getTime())); 
} 
+0

你是否在列表中的每個元素上調用toString?它看起來像你的toString()是正確的,你只需要在每次調用toString後添加一個換行符字符 –

+0

當它打印出一個鏈表時,如果我在末尾添加一個新行(/ n)它只是空格因爲它們都是連在一起的 – PeterP1989

+0

解決這個問題的一種方法是遍歷每個項目上調用System.out.println的列表,即myList.forEach(System.out :: println) –

回答

0

這個問題是你在一個集合上調用了toString,這個集合並沒有在每個元素的toString之間添加一個換行符。

一個解決方案是改爲迭代集合並在每個項目上調用System.out.println。

另一種解決方案是將列表隱蔽到流,然後使用流API每個項目映射到它的toString,然後收集在一起,因爲你沒有使用「\ n」作爲分隔符如

myList.stream().map(g -> g.toString()).collect(Collectors.joining("\n")) 
0

不告訴我在toString方法中聲明的是什麼類,我將其稱爲ClassA

您在評論中說您正在使用鏈接列表來存儲ClassA對象。所以,我會告訴你如何打印出一個鏈表的每個項目:

StringBuilder builder = new StringBuilder(); // StringBuilder is used to concatenate all the items in the list 
for (ClassA item : theLinkedList) { 
    builder.append(item.toString()); 
    builder.append("\n"); // Here I add the new line 
} 
System.out.println(builder); 

如果您正在使用Java8,您可以使用stream和`映射做到這一點爲好,在基因泰勒的答案建議。它更優雅。

+0

我的不好我可以看到我沒有添加它被稱爲gamingList的類名稱,但它如何與日期一起工作, – PeterP1989