2013-02-26 44 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或任何您的首選號碼。