2012-10-22 187 views
1

在Java中,有什麼方法可以使用printf將空格添加到字符串末尾以確保所有字符串在命令行中的長度相同。printf將空格附加到字符串的末尾

我有一個程序,它返回的記錄,但我需要將其顯示爲使...

Bob   27  007895 
Christopher 32  007856 

基本上我想每個名稱佔用30個字符,所以列的所有對齊。在此刻我使用字符串末尾的選項卡來創建列,但有一些名稱導致所有列錯過對齊(克里斯托弗是其中之一)....所以即時通訊假設有一個更好的方法去做這個?

System.out.print(Bob.getName() + "\t"); 
System.out.print(Bob.getAge() + "\t"); 
Sstem.out.print(Bob.getRegnumber() + "\t"); 
System.out.print(Chris.getName() + "\t"); 
System.out.print(Chris.getAge() + "\t"); 
Sstem.out.print(Chris.getRegnumber() + "\t"); 

我輸出到不使用GUI的comandline。

乾杯

回答

3
System.out.printf("%30s %d %d", Bob.getName(), Bob.getAge(), Bob.getRegnumber()); 
+0

'%30s'應該由長度最長的名字決定...... – user1329572

+1

是的,我同意,但是克里斯說「佔用了30個字符」,所以我跟着他的方向.. –

+0

哦,沒看過那......那麼好的答案! :) – user1329572

0

你會發現最大無。的字符,名稱列應該有。

打印之前,您可以獲取所有值,找到最大長度並相應地設置寬度。

3

這是cheat sheet that summarizes the various printf symbols以及如何使用它們。

您想爲每個字段指定一個特定的最大尺寸,以確保所有字段對齊。如果您沒有指定最大尺寸,那麼您將再次發生錯位。

因此,需要類似如下的格式爲:「%-30.30s%8D%8D \ n」個

如果最後一個字段是一個字符串,而不是一個整數,你會需要像「%-30.30s %8d%10.10s \ n「。

「%-30.30s」將打印左對齊的最多30個字符。 「%10.10s」將打印右對齊的最多10個字符。

相關問題