2013-08-20 39 views
1

我正在使用Java將表格格式打印到文本文件。我有三列三行。訣竅是讓列排隊。什麼是找到它們之間的間距的方法?下面的代碼不起作用,因爲它設置使用自動間距寫入文本文件

import java.io.BufferedWriter; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.util.ArrayList; 

public class makeTable { 

static ArrayList<String> name = new ArrayList<String>(); 
static ArrayList<String> model = new ArrayList<String>(); 
static ArrayList<String> year = new ArrayList<String>(); 

public static void main(String arg[]) { 
    addData(); 
    BufferedWriter writeTable = null; 
    try { 
     writeTable = new BufferedWriter(new FileWriter("/home/oveledar/Desktop/table.txt")); 
     for (int i = 0; i < name.size(); i++){ 
      writeTable.write(name.get(i) + " " + model.get(i) + " " + year.get(i)); 
      writeTable.newLine(); 
     } 
    } catch (IOException e) { 
     System.err.println(e); 
    } finally { 
     if (writeTable != null) { 
      try { 
       writeTable.close(); 
      } catch (IOException e) { 
       System.err.println(e); 
      } 
     } 
    } 
} 

public static void addData(){ 
    name.add("Dodge"); 
    name.add("BMW"); 
    name.add("VW"); 
    model.add("Caravan"); 
    model.add("323i"); 
    model.add("Passat"); 
    year.add("2006"); 
    year.add("2009"); 
    year.add("2011"); 

} 

輸出

Dodge Caravan 2006 
BMW 323i 2009 
VW Passat 2011 

「/ T」不長名工作

Dodge Caravan 2006 
BMW 323i 2009 
VW  Long model name here 2011 
+0

對於比例字體(其中用空格填充不起作用),使用HTML,並編寫一個'

'。 –

+0

可能重複[如何在Java中填充字符串?](http://stackoverflow.com/questions/388461/how-can-i-pad-a-string-in-java) – agweber

回答

3

嘗試列之間的間距集使用String.format填充字符串()

這個問題應該告訴你它是如何工作的:How can I pad a String in Java?

在寫入文件之前,將每個元素填充到長度相等的字符串中。

0

就像您使用新行換碼符\n來創建一個新行一樣,在每個控制檯寫入之後,您應該爲製表符包含一個轉義字符\t,而不是嘗試將其與任意空格對齊。

writeTable.write(name.get(i) + "\t" + model.get(i) + "\t" + year.get(i)); 
+0

它不起作用對於某些情況下,如果名稱更長。 SEe編輯 – ono

1

如果數據沒有接近相同的長度,使用製表符不一定會垂直排列。

更好的解決方案是用PrintWriter類包裝BufferedWriter並使用printf方法。

像這樣:

printf("%-20s%-20s%-20s", name.get(i), model.get(i), year.get(i)); 

的 「 - 」 左對齊的列和20是列的寬度。查看格式規範的java.util.Formatter javadocs。