我有这个简化的代码:
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。我知道代码有文字。简单起见。
答案 0 :(得分:1)
java.io.PrintStream的方法printf的格式字符串(如System.out)定义为Java format strings。它们与您链接的文档不同,后者称为Lava。特别是Java中百分比转换的宽度是一个数字,不能用星号(*)代替。换句话说,正如您所注意到的,写%-*s
并不行,但可以写%-20s
或任何您喜欢的数字。