在 Java 中使用 printf 换行“%n”是否正确?

问题描述 投票:0回答:3

我是 Java 的新手,我束手无策。

我的程序可以运行,但打印时我需要格式方面的帮助。

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 的名字或“兼容”:

Stacey Francis   is compatible with  Owen Farrell
                                 
                          Jack Clifford
                                 
                          Joshua Watkins

只是想知道如何去做?

java string printf newline
3个回答
20
投票

是的,

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

'

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

你的输出目前只有一个换行符在最后,而不是在你似乎想要它们的地方。您需要使用如下格式:

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

(也许还有一些标签用于对齐)。


10
投票

%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
,以便在前面的名字下方格式化它们。


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");
© www.soinside.com 2019 - 2024. All rights reserved.