干净地排列输出

时间:2011-08-30 04:25:43

标签: java excel arraylist text

我有一个文本文件,其中包含使用cvs加密保存的数据,我想在java中打开它并完美地显示它。我已经到了从文本文件中读取它的点,但现在我希望它在逗号中分割,现在我想要将它们全部完全对齐显示。

 Last, First, car year, car model 
 barry, john, 1956, chevy impala 

我希望它显示如下:

 last      First   car year    car model 
 barry     john    1956       chevy impala

我只是使用scanner类来从文本文件中获取数据。

2 个答案:

答案 0 :(得分:1)

确定列值的最大长度(包括列标题),然后创建格式String并使用该格式字符串构建对齐的行:

// some easy magic first
String[][] values = getCsvValues(file);
int[] maxLengths = determineMaxLengths(values);

// create formatstring, something like "%10s %5s %10s %n"
StringBuilder formatBuilder = new StringBuilder();
for (int maxLength:maxLengths)
  formatBuilder.append("%").append(maxLength).append("s ");
formatBuilder.append("%n");   // newline

// output
for (String[] row:values)
  System.out.printf(formatBuilder.toString, row);

答案 1 :(得分:0)

取决于你需要确定的所有内容,你可能必须经历并找到每列的最长字符串,但我会使用标签:"\t"。列之间的两个或三个通常适用于我,对于我使用的简单调试。

如果你真的认真对待它一直是正确的,请尝试查看Formatterprintf