Java printf指定可变宽度

时间:2013-02-26 03:41:25

标签: java printf

我有这个简化的代码:

System.out.printf("%-*s   Exam Percentage: %4.1f   Final Grade: %c\n", VAR, "fox"+", "+"jim",25.3225, 'C');

根据this和其他资源,应该产生一个广泛的“VAR”字符列,以便:

 fox, jim   Exam Percentage:  25.3    Final Grade: C

它通过for循环运行,VAR是第一个字符串的最大大小。

我重新调整方法:

System.out.printf("%-"+VAR+"s   Exam Percentage: %4.1f   Final Grade: %c\n", "fox"+", "+"jim",25.3225, 'C');

它有效,但我主要是好奇。此外,前面提到的页面提到'argsize'对此的解释可能提供一些见解。

P.S。我知道代码有文字。简单起见。

1 个答案:

答案 0 :(得分:1)

java.io.PrintStream的方法printf的格式字符串(如System.out)定义为Java format strings。它们与您链接的文档不同,后者称为Lava。特别是Java中百分比转换的宽度是一个数字,不能用星号(*)代替。换句话说,正如您所注意到的,写%-*s并不行,但可以写%-20s或任何您喜欢的数字。