Java printf为什么它在我的方法中没有正确格式化?

时间:2014-02-23 01:59:55

标签: java methods call printf

当我调用方法时

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

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

我希望输出为

     Test 1 Test 2 Test 3 Average

^^ 10缩进空格

2 个答案:

答案 0 :(得分:4)

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

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

更简单仍然使用单个Formatter String(并使用与平台无关的换行符说明符 - %n

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

阅读Formatter javadoc了解更多

答案 1 :(得分:0)

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

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

System.out.printf(“%10s”,...)

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