2013-07-23 40 views
0

有一個程序,我想輸出數組中的值。使用選項卡(\ t)或格式例如(%40s)不佔用不同長度的字符串。Java格式輸出到多個字符串值的控制檯/ JTextArea

當前代碼以下是正確的標題。

System.out.format("%s%40s%32s%32s%32s%32s\n","ID","NAME","SURNAME","POSITION","CONTACT","EMAIL"); 

然而,並非針對不同Lenths

我想下面* **

Name   Surname   ID   Position 
Joanne  Bassy   0000001  Manager 
Mannnny  papsasjkasjnnxz 0000002  Boss 

這樣的事情我得到這個值儘管* **

Name   Surname   ID   Position 
Joanne  Bassy   0000001  Manager 
Mannnny papsasjkasjnnxz 0000002   Boss 
+0

只能使用等寬字體可能的,並且使用\噸,的 – mKorbel

+4

使用的JTable代替與困擾,並通過去除在列和行(JTable的API) – mKorbel

+0

感謝您的響應線mKorbel –

回答

1

如下更改格式字符串:

  1. 添加寬度說明第一格式說明指定的第一列的寬度
  2. 添加-標誌上的所有格式說明將值左對齊

更新後的格式字符串將爲"%-40s%-40s%-32s%-32s%-32s%-32s\n"

查看Format String Syntax瞭解更多詳情。

注意,這個解決方案有幾個限制:

  • 當你使用一個固定寬度字體
  • 如果任何字符串比提供的寬度更長它只會工作,這將推動該行的其餘部分出列和列不會排隊。
  • 用戶將無法輕鬆操作數據(列寬,列順序,排序順序)
  • 用戶將無法輕鬆複製輸出並直接粘貼到電子表格中。

替代品包括

  • 使用JTable,這將是更靈活,但是這需要更多的代碼。
  • 使用\t分隔字段而不是用空格填充。此選項允許複製到電子表格中,但仍有其他限制,如果列值不是大致相同,則可能更難列出列值。
+1

假設一個固定寬度的字體。 – trashgod

+0

是的,我假設這是一個固定寬度的字體,因爲這是給出的例子。正如@mKorbel所說,最好的方法是使用'JTable',但如果僅限於使用文本輸出的限制,則此解決方案將與固定寬度的字體結合使用。 –

+0

+1直接解決問題,但擴大限制和替代方案不會有什麼壞處。 – trashgod