2014-04-03 122 views
-6

我想按特定順序打印數組,但我不知道如何,谷歌也沒有幫助我。如何格式化ArrayList進行打印?

輸出:

[PR001, Slinger 6.20, 135, 380, PR002, Strip 1.07, 93, 470, PR003, Hal, 301, 965, PR004, Zolder, 23, 679] 

預期輸出:

PR001 Slinger 6.20 135 380 
PR002 Strip 1.07  93 470 
PR003 Hal   301 965 
PR004 Zolder   23 679 

我從SQL查詢得到的ArrayList:

public ArrayList<String> selectAllePrinters() { 
    ArrayList<String> printers = new ArrayList<>(); 
    try { 
     Connection con = SimpleDataSource.getConnection(); 
     PreparedStatement stat = con.prepareStatement("SELECT * FROM printer;"); 
     ResultSet result = stat.executeQuery(); 
     while (result.next()) { 
      printers.add(result.getString("printerid")); 
      printers.add(result.getString("printernaam")); 
      printers.add(result.getString("aantalkleur")); 
      printers.add(result.getString("aantalZwart")); 
     } 
     result.close(); 
     stat.close(); 
     return printers; 
    } catch (SQLException e) { 
     System.out.println(e); 
     return null; 
    } 
} 

我怎樣才能做到這一點?提前致謝!

+1

如何顯示一些代碼? – OldProgrammer

+0

你使用數組還是ArrayList,因爲這個輸出是用於ArrayList的。而且,代碼在哪裏? – CMPS

+0

這是什麼? – Leo

回答

0

這是幾乎你需要使用:-)標籤

List<String> l = new ArrayList<String>(Arrays.asList(ss)){; 
    @Override 
    public String toString(){ 
     Iterator<String> it = iterator(); 
     if (! it.hasNext()) 
      return ""; 

     StringBuilder sb = new StringBuilder(); 
     int i = 0; 
     for (;;) { 
      i++; 
      String e = it.next(); 
      sb.append(e); 
      if (! it.hasNext()) 
       return sb.toString(); 
      sb.append('\t'); 
      if (i%4==0){ 
       sb.append("\n"); 
      } 
     } 
    } 
}; 
System.out.println(l); 

爲了有兩列之間間距完美的你想要什麼,你必須遍歷所有元素兩次找到每列的最大寬度。

但是,如果製表符可以爲您(也許你只是想複製並粘貼到電子表格),你可以嘗試這種方式。

+0

謝謝!這完美的作品:) – user3190748