printf()输出混乱

时间:2013-07-23 17:33:22

标签: java

我正在使用format()printf()方法进行格式化字符串的示例练习。 这是一个例子,其输出我很困惑请求帮助。

int i2= 12345;
//Total length of the argument should be 7 and pad with zeros
System.out.printf(">%0,7d< \N",i2);

输出

>012,345<

如果我们看到,论证的长度是六。但分隔符是否也计入了 它的长度。如果不是那么输出应该是我的意思。

>001,2345<

请帮助澄清这个疑问。

3 个答案:

答案 0 :(得分:3)

Formatter的javadoc页面没有提到在解释宽度时对分隔符进行分组的任何特殊处理,它只是讨论字符的数量

  

可选宽度是一个非负十进制整数,表示要写入输出的最小字符数。

答案 1 :(得分:1)

您使用逗号并打印整数,这意味着'7'是宽度而不是精度。宽度值是指整个格式化的字符串,包括前导零,空格,逗号,小数和负号。

答案 2 :(得分:0)

请参阅IO Formatting帮助页面。基本结构是following(点击查看)。

根据此文件:

  

宽度表示格式化值的最小宽度;价值是   必要时填充。默认情况下,该值用空格填充。