我有一个关于以下行的问题:System.out.printf("%3s"," Test");
为什么不输出" Tes"从我的理解3之前的'意味着保留了三列。例如,当我执行以下操作时:System.out.printf("%3d",1);它将打印出来" 1"
答案 0 :(得分:3)
字段宽度是整个字段的字符数,包括内容,因此如果Test超过3,则不会有填充。 JavaDoc for Formatter
中有这样的例子如果你使用了更宽的字段,那么将使用填充,这里有10个字段,添加6个空格以使其达到10
System.out.printf("%10s", "Test");
输出
Test
1234567890
文档还说明了
宽度是要写入的最小字符数 输出。如果转换值的长度小于宽度 然后输出将被''('\ u0020')填充,直到总数 字符数等于宽度。填充位于左侧 默认。如果给出' - '标志,那么填充将在 对。如果未指定宽度,则没有最小值。
答案 1 :(得分:1)
以下是格式说明符
中宽度的规则如果值的字符串表示形式未填充最小值 长度,该字段将用空格填充。如果转换了 值超过最小长度,但转换结果将 不被截断。
所以你期望截断这个值是错误的。它仅用于填充。
答案 2 :(得分:0)
答案 3 :(得分:0)
指定的字段宽度表示要输出的最小字符数。