2016-05-06 38 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