3

我有这个简化的代码:

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

根据这个和其他资源,应该产生一个列“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”的解释可能会提供一些见解。

PS我知道代码有文字。它是为了简单。

4

1 回答 1

1

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

于 2013-02-26T03:55:57.210 回答