Java printf 指定变量宽度

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”,对此的解释可能会提供一些洞见。

附注:我知道代码中有字面量。这是为了简单起见。


3
抱歉,我有点困惑。您的问题确切是什么? :-/ - ruakh
你没想到System.out.printf在你的Lava资源中被定义了吗?System.out是一个java.io.PrintStream。 - minopret
1个回答

1

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接