2013-02-26 42 views
3

我有这样的简化的代码:爪哇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是第一个字符串的最大尺寸。

我reconize方法:

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

它的工作原理,但我主要是好奇。另外,前面提到的页面提到“argsize”可能会提供一些解释。

P.S.我知道代码有文字。它的简单性。

+3

对不起,我很困惑。你的问题到底是什么? : -/ – ruakh 2013-02-26 03:43:41

+0

你不希望System.out.printf被定义为在你的Lava资源中? System.out是一个java.io.PrintStream。 – minopret 2013-02-26 03:48:39

回答

1

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