printf的字段宽度

时间:2014-09-09 04:50:05

标签: java

我有一个关于以下行的问题:System.out.printf("%3s"," Test");

为什么不输出" Tes"从我的理解3之前的'意味着保留了三列。例如,当我执行以下操作时:System.out.printf("%3d",1);它将打印出来" 1"

4 个答案:

答案 0 :(得分:3)

字段宽度是整个字段的字符数,包括内容,因此如果Test超过3,则不会有填充。 JavaDoc for Formatter

中有这样的例子

如果你使用了更宽的字段,那么将使用填充,这里有10个字段,添加6个空格以使其达到10

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

输出

      Test
1234567890

文档还说明了

  

宽度是要写入的最小字符数   输出。如果转换值的长度小于宽度   然后输出将被''('\ u0020')填充,直到总数   字符数等于宽度。填充位于左侧   默认。如果给出' - '标志,那么填充将在   对。如果未指定宽度,则没有最小值。

答案 1 :(得分:1)

以下是格式说明符

中宽度的规则
  

如果值的字符串表示形式未填充最小值   长度,该字段将用空格填充。如果转换了   值超过最小长度,但转换结果将   不被截断。

所以你期望截断这个值是错误的。它仅用于填充。

答案 2 :(得分:0)

来自the documentation

  

<强>宽度

     

宽度是最小要写入输出的字符数。

(我的重点)

答案 3 :(得分:0)

指定的字段宽度表示要输出的最小字符数。

这可能会有所帮助:http://web.cerritos.edu/jwilson/SitePages/java_language_resources/Java_printf_method_quick_reference.pdf