Java printf 为什么它在我的方法中格式不正确



当我调用该方法时

public static void print(){
    System.out.printf("%10s", "Test 1 Test 2 Test 3 Averagen");
}

没有正确格式化(它根本没有缩进)有人可以向我解释为什么。

我希望输出是

     Test 1 Test 2 Test 3 Average

^^10 个缩进空格

您的printf参数长度为 29 个字符,但您只允许 10 个字符的偏移量,因此不会产生缩进。因此,您需要一个格式说明符宽度为 10 + 29(完整字符串)

System.out.printf("%39s", "Test 1 Test 2 Test 3 Averagen");

更简单的仍然是使用单个Formatter String(并使用平台独立的换行符说明符 - %n

System.out.printf("%10sTest 1 Test 2 Test 3 Average%n", " ");

阅读格式化程序 javadoc 了解更多信息

我认为"缩进"是指填充,因为 printf 不是用于缩进的。您提供的代码不会添加任何空格,因为字符串的长度超过 10 个字符。此外,%10s 旨在在字符串添加空格以匹配 10 个字符的大小(在给定的示例中)。

如果你想在之前用空格填充字符串,你可以写:

System.out.printf("% 10s", ...)

在这种情况下,它将用空格填充字符串以匹配 10 个字符。

最新更新