Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 整洁地排列输出_Java_Excel_Arraylist_Text - Fatal编程技术网

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

我有一个文本文件,其中包含使用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类从文本文件中获取数据

根据您需要确定的所有行的排列方式,您可能需要遍历并找到每个列的最长字符串,但我会使用制表符:
“\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-为什么不呢?无论如何,你都得读这个文件。否则,您需要知道最大列大小才能进行正确对齐。在不知道实际列宽的情况下进行对齐是不可能的。现在我找到了最大列数,但没有找到行数