2011-08-30 65 views
0

我有一个文本文件,其中包含使用cvs加密保存的数据,我想用java打开它并将其完美排列。我已经开始从文本文件中读取它,但现在我希望它在逗号分割,现在我想显示它完全对齐。干净地排队输出

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

,我希望它显示是这样的:

last  First car year car model 
barry  john 1956  chevy impala 

,我只是使用的扫描仪类来获得从文本文件中的数据。

回答

0

取决于您需要确定所有行的确定方式,您可能需要经过并为每列找到最长的字符串,但我会使用制表符:"\t"。两列或三列之间通常适用于我,为简单的调试,这就是我使用的。

如果你真的很认真地对待它,请尝试查看Formatter s和printf

+0

我将如何实现的printf因为编码我所有的一切是system.out.printf(arraylist.get(i)); –

+0

看看Andreas_D的回答,这是一个很好的方法。 – Dogmatixed

1

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

// 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); 
+0

但程序可以接受任何输入,所以设置条件不太可能。 –

+0

errrrrr ... *什么*? –

+0

你认为上面的“设置条件”是什么? – Dogmatixed