2013-10-15 92 views
1

我需要系統輸出println來執行此格式,以便第一列和第二列之間的空格數根據內容而有所不同。所以第二列總是被分配。Java System.out.println格式

任何方式來設置第二列開始在固定位置?

token: accept      lexical unit: ACCEPT_KEYWORD 
token: a        lexical unit: IDENTIFIER 
token .\’n’       lexical unit: END_OF_INSTRUCTION 
token: perform      lexical unit: PERFORM_KEYWORD 
token: find       lexical unit: IDENTIFIER 
token: until       lexical unit: UNTIL_KEYWORD 
token: b        lexical unit: IDENTIFIER 
token: =        lexical unit: EQUALS_SIGN 
token: 0        lexical unit: INTEGER 
token .\n       lexical unit: END_OF_INSTRUCTION 
+1

嘗試使用'\的t'逃脫定義字符串時。 – hexafraction

+0

您是否聽說過一款名爲Google的搜索引擎?它通常可以幫助你解決你的問題。例如http://google.com/search?q=java+string+format – Pietu1998

+0

或者只是在兩列之間創建一個空白字符串。該字符串中的空白數量可能因列內容的長度而異。 –

回答

0

這裏有好友:

public class Test { 

     public static class Logger { 

      private static final int MAX_WHITESPACES = 20; 

      public static void s(String token, String lex) { 
       String whitespaces = new String(new char[Math.abs(token.length()-MAX_WHITESPACES)]).replace('\0', ' ');; 
       String line = String.format("token: %s"+whitespaces+"lexical unit: %s", token, lex); 
       System.out.println(line); 
      } 

     } 

     public static void main(String[] args) { 
      Logger.s("accept","ACCEPT_KEYWORD"); 
      Logger.s("a","IDENTIFIER"); 
      Logger.s(".\\’n’","END_OF_INSTRUCTION"); 
      Logger.s("perform","PERFORM_KEYWORD"); 
     } 


    } 

注意到,所有的令牌必須是< MAX_WHITESPACES

0

使用String.format()來創建一個格式化的行。 For more information.

對所有字段使用相同的標記寬度,大於最大標記大小,並且它將排隊。