Java 整洁地排列输出
我有一个文本文件,其中包含使用cvs加密保存的数据,我想用java打开它并完美地显示它。我已经到了从文本文件中读取它的地步,但现在我希望它在逗号处分开,现在我希望显示它完全对齐Java 整洁地排列输出,java,excel,arraylist,text,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 imp
Last, First, car year, car model
barry, john, 1956, chevy impala
我希望它显示如下:
last First car year car model
barry john 1956 chevy impala
我只是使用scanner类从文本文件中获取数据 根据您需要确定的所有行的排列方式,您可能需要遍历并找到每个列的最长字符串,但我会使用制表符:
“\t”
。两个或三个列之间通常适合我,对于简单的调试,这就是我所使用的
如果您真的很担心它一直正确,请尝试查看s和。确定列值(包括列标题)的最大长度,然后创建一个格式字符串并使用该格式字符串生成对齐的行:
// 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);
我将如何实现printf,因为在编码端,我只有system.out.printf(arraylist.get(I));看看Andreas_D的答案,这是一个很好的方法。但是程序可以接受任何输入,所以设置条件不太可能。你认为上面的“设置条件”是什么?我不知道csv数据集有多大。所以GetCsvValue(文件)不起作用。@chuck-为什么不呢?无论如何,你都得读这个文件。否则,您需要知道最大列大小才能进行正确对齐。在不知道实际列宽的情况下进行对齐是不可能的。现在我找到了最大列数,但没有找到行数