gpt4 book ai didi

java - 从 csv 文件 java 中删除一些列

转载 作者:行者123 更新时间:2023-11-29 08:48:22 26 4
gpt4 key购买 nike

我想编写一个代码来从 csv 文件中删除一些列。有一个包含行和列的 csv 文件。我想搜索第一行中数字为零的列并删除它们并构建一个新的 csv 文件。我尝试将 csv 文件写入字符串数组,然后在数组的第一行中进行搜索。

如果列中有零,请将其删除。最后构建一个新的 csv 文件。

这是我的代码:

       public class removezero {
public static void main(String[] args) throws Exception {

//scanner to read csv file
Scanner replace = new Scanner(new File("csvfile"));


//array of string
String [][] all= new String [5][5];

//new csv file to write answer
FileWriter removezero = new FileWriter(createReplacedCsv());

int i=0;
StringBuilder builder = new StringBuilder();

//write csv to array




while (replace.hasNext()) {

String[] result = replace.nextLine().split(",");

all[i]= result;
i++;


}


// write from array to builder

for(int j=0;j<5; j++){
for(int k=0;k<5; k++)
if(!(all[1][k]).equals("0")){builder.append(all[j][k]).append(",");}
builder.deleteCharAt(builder.lastIndexOf(","));
builder.append("\n");
}


//write to csv file
removezero.write(builder.toString());
removezero.flush();
removezero.close();

}




private static File createReplacedCsv() throws Exception {
File replacedCsv = new File("removedzero.csv");
replacedCsv.createNewFile();
return replacedCsv;
}


}

最佳答案

您的代码的问题是以下行的结果:

int col = replace.nextLine().length();

由于 Scanner 是一种单向迭代器(更多详细信息请参见此处:Using scanner.nextLine()),您为获取列数而执行的额外调用意味着在循环中读取 CSV 文件时,您我们得到的元素比 countLines 预期的要少,并且在空迭代器上调用 nextLine 时会出现错误。

关于java - 从 csv 文件 java 中删除一些列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23974084/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com