gpt4 book ai didi

java - 无法通过 Apache commons csv 读取更多记录

转载 作者:行者123 更新时间:2023-11-29 08:24:41 33 4
gpt4 key购买 nike

我有这样的 csv 文件:-

a,b,c,d       //<- header
0.1,0.123,2.13,3.22
0.3,0.213,2.11,3.12
0.5,0.231,2.3,3.21
0.7,0.121,2.26,3.321

我正在使用 apache commons csv 读取 csv 文件。

我已经制作了对应于上述 csv 文件的 POJO,它命名为 CSVInputFileModel 类。

下面是我用来读取文件的方法:-

private List<CSVInputFileModel> inputCSVData;


void fileParser() throws IOException {
Reader in = new FileReader(INPUT_CSV_FILE);
Iterable<CSVRecord> records = CSVFormat.RFC4180.withFirstRecordAsHeader().parse(in);

for (CSVRecord record : records) {
// Adding each record to array list

CSVInputFileModel csvInputFileModel = new CSVInputFileModel();

csvInputFileModel.setA(Double.parseDouble(record.get("a")));
csvInputFileModel.setB(Double.parseDouble(record.get("b")));
csvInputFileModel.setC(Double.parseDouble(record.get("c")));
csvInputFileModel.setD(Double.parseDouble(record.get("d")));

inputCSVData.add(csvInputFileModel); //<-- NPE at second iteration
}
System.out.println(inputCSVData);
}

下面是 CSVInputFileModel 类

public class CSVInputFileModel {
private double a;
private double b;
private double c;
private double d;

public CSVInputFileModel() {

}
//All args constructor
//hashcode equals
//getter setters
//toString
}

下面的代码给出了空指针异常。当我运行调试器时,我发现在第一次迭代中,apache csv commons 能够读取 csv 文件的第一条记录,而它是第二次迭代时出现空指针异常。

我无法弄清楚我做错了什么!

最佳答案

首先,我确定您正在成功读取第一条记录,但不可能将其添加到列表中,因此:

  • 您正在使用增强型 for 循环,这意味着第二条记录已经存在,这不是您的问题。
  • CSVInputFileModel似乎是对的。
  • 您声明了 inputCSVData 但未实例化。

我的结论是您错过了输入列表实例,这就是进入第一次迭代但从未进入第二次的原因。

解决这个问题 inputCSVData = new ArrayList<CSVInputFileModel>()在尝试在代码中添加元素以修复它之前。

关于java - 无法通过 Apache commons csv 读取更多记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54058650/

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