在java中使用printf换一个新行? %n是否正确?

时间:2012-11-22 10:29:18

标签: java string printf

新手在这里,但我最终在我的智慧。我的程序全部正常工作,但在打印时只需要格式化帮助。

if(count == 3)
    System.out.printf ("%-15s %15s %15s %15s %15s %n", n, " is compatible with 
                         ",dates[k],dates[k+1],dates[k+2]);

我的输出是

Stacey Francis   is compatible with     Owen Farrell   Jack Clifford  Joshua Watkins 

我希望我的输出是(不重复斯泰西弗朗西斯名称或“兼容”:

Stacey Francis   is compatible with  Owen Farrell

                          Jack Clifford

                          Joshua Watkins

只是想知道如何解决这个问题?

谢谢,

科斯蒂

3 个答案:

答案 0 :(得分:8)

是的,%n是printf中的换行符。请参阅java.util.Formatter的文档,特别是指定的转换表:

  

'n'行分隔符结果是特定于平台的行分隔符

您的输出目前只有一个换行符,而不是您似乎想要它们的点。您需要使用以下格式:

"%-15s %15s %15s %n %15s %n %15s %n"

(可能还有一些标签用于对齐)。

答案 1 :(得分:3)

%n应该有效。但问题是,您刚刚在格式字符串中使用它。您需要将其插入适当的位置: -

"%-15s %15s %15s %n %45s %n %45s"

您还可以在格式说明符之间使用"\n"来打印换行符: -

System.out.printf ("%-15s %15s %15s \n %45s \n %45s", 
                     n, " is compatible with ", dates[k],dates[k+1],dates[k+2]);

此外,我已将length的最后两个名称的15增加到45,并将其格式设置在以前的名称下方。

答案 2 :(得分:0)

你可以尝试一下。

   if(count == 3)
System.out.printf ("%-15s %15s %15s %15s %15s %n", n, " is compatible with 
                     ",dates[k],dates[k+1],dates[k+2]+"\n");