在Java中使用printf时,“%n”作为换行符是否正确?

7cwmlq89  于 2023-04-04  发布在  Java
关注(0)|答案(3)|浏览(117)

我是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弗朗西斯name或“is compatible with”):

Stacey Francis   is compatible with  Owen Farrell
                                 
                          Jack Clifford
                                 
                          Joshua Watkins

只是想知道如何去做这件事?

w7t8yxp5

w7t8yxp51#

是的,%n在printf中是一个换行符。请参阅java.util.Formatter的文档,特别是转换表,其中指定:
' n '行分隔符结果是特定于平台的行分隔符
您的输出目前只有在末尾有一个换行符,而不是在您似乎想要它们的地方。您需要使用这样的格式:

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

(and也许一些标签扔在那里对齐)。

iq0todco

iq0todco2#

%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]);

另外,我将最后两个名字的length15增加到45,将它们的格式设置在前面的名字下面。

k97glaaz

k97glaaz3#

请试试这个。

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");

相关问题