我编写了一个创建并写入CSV文件的函数。我的功能如下:
private static void writeIntoCSV(GaData results, String filename){
try{
File f = new File("D:\\" + filename);
BufferedWriter output = new BufferedWriter(new FileWriter(f));
int i = 0;
for (ColumnHeaders header : results.getColumnHeaders()) {
i++;
if(i < header.size()){
output.write(header.getName() + ",");
i++;
}
else{
output.write(header.getName());
}
}
output.write("\n");
int j = 0;
for (List<String> row : results.getRows()) {
j++;
for (String column : row) {
if(j < row.size()){
output.write(column + ",");
j++;
}
else{
output.write(column);
}
}
output.write("\n");
j = 0;
}
output.close();
}
catch(Exception e){
System.out.println(e);
}
}
这里当我有两个标题时,它正确地分隔它,如a,b但是当我有三个标题时它分开为:a,bc
我试图改变我喜欢的价值和地点:
int i = 1;
for (ColumnHeaders header : results.getColumnHeaders()) {
if(i < header.size()){
output.write(header.getName() + ",");
i++;
}
else{
output.write(header.getName());
}
}
output.write("\n");
在这种情况下,它显示标题,如a,b,用于两个标题,a,b,c用于三个标题。如何解决此问题以正确放置逗号。
对于数据行,它的工作正常。
答案 0 :(得分:1)
您可以使用番石榴Joiner
加入&#39;,&#39;像这样的东西:
Joiner joiner = Joiner.on(",").skipNulls();
return joiner.join("Harry", null, "Ron", "Hermione");
完整文档Guava docs
答案 1 :(得分:1)
调用header.size()的返回值是什么?是标题列计数? 作为我的观点,我认为你应该与results.getColumnHeaders()的大小进行比较而不是header.size()
答案 2 :(得分:1)
删除I的第一个增量。简单的方法是看这个。有三个标题。我被设置为0.你开始循环,我变成1.我小于3,所以第一个块被执行。你再次增加,我现在是2.循环包围。我再次增加到3.但你只是第二个值。
基本上你要增加我多次!
答案 3 :(得分:0)
将第二个代码中的i设置为0而不是1,它应该可以正常工作