2014-01-22 38 views
1

我需要通過我的標籤賦予命令把我的價值觀的打印,格式應該像this--如何給項目和同一空間之間的固定空間項目的值之間時,打印收據

Name      amount    quanity 

sdfsadfhdasjfsdfds   34    2 

asd      22    1 

但問題是,如果值爲name is small,那麼format get dis-balanced。如何給項目之間的修復空間,使格式保持不變。

我的代碼is--

builder.append(Name+"\n" + "   " +amount  + "    "+ quantity + "\n"); 
+0

參考,因爲當我做這樣的http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax –

回答

3

可以使用String.format()方法:

System.out.println(String.format("%s %10s %10s", "foo", "bar", "baz")); 
System.out.println(String.format("%s %10s %10s", "foofoo", "barbar", "bazbaz")); 

打印:

foo  bar  baz 
foofoo  barbar  bazbaz 

%10s告訴String.format()前綴帶有空格的傳遞的字符串,直到寬度達到10個字符。

查看documentation瞭解格式字符串的更多詳細信息。

+0

它不是爲我工作--- StringBuilder builder = new StringBuilder(String.format(「%s%21s%21s」,「foo」,「bar」,「baz」)+「\ n」); \t builder.append(String.format(「%s%21s%21s」,「anjubvgdfsgfdg」,「1」,「23」)); \t \t System.out.println(builder);格式得到distrubed –

+0

嘿它完美的工作時,我在控制檯上這樣做,但是當打印收據空間不匹配,因爲我需要。 –

1

使用String.format()方法以及%s,您應該可以遍歷所有名稱項目(假設它們應該比價格&更長),然後給int一個最長字符串的值。

String[] items = {"foo", "bar"} // item names 
int spaces; // number of spaces 

for(int i = 0; i < items.length; i++){ 

     if(spaces < items[i].length){ 

      spaces = items[i]; 

     } 

} 
相關問題