我有这样的csv文件:-a,b,c,d //<- header0.1,0.123,2.13,3.220.3,0.213,2.11,3.120.5,0.231,2.3,3.210.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文件的第一条记录,而第二次迭代则给出了空指针异常。我无法弄清楚我做错了什么!
2 回答
![?](http://img1.sycdn.imooc.com/545863e80001889e02200220-100-100.jpg)
HUWWW
TA贡献1874条经验 获得超12个赞
首先,我确定您正在成功读取第一条记录,但是不可能将其添加到列表中,因此:
您正在使用Enhaced for循环,这意味着第二条记录在那里,这不是您的问题。
在
CSVInputFileModel
似乎是正确的。您声明了inputCSVData,但未实例化。
我的结论是您错过了输入列表实例,这就是为什么要输入第一个迭代,但绝不要输入第二个迭代的原因。
解决这个问题,然后inputCSVData = new ArrayList<CSVInputFileModel>()
再尝试在代码中添加元素以对其进行修复。
添加回答
举报
0/150
提交
取消