2 回答
TA贡献1752条经验 获得超4个赞
您只能Iterable在Java 中迭代一次,在您的情况下CSVParser parsed实现Iterable<CSVRecord>.
因此,您仅在第一次计算AAL 的统计数据时对其进行迭代,在分析AAPL和ADBE 的数据期间,它将作为空数据处理。
您可以通过引入 helper list init 来处理这个问题,parsed在for循环之前添加下一个代码(当然,这是一个单行解决方案,例如在 Java 8 中,但此选项也适用于早期版本):
List<CSVRecord> records = new ArrayList<>();
for (CSVRecord record : parsed) {
records.add(record);
}
并更改下一行:
for (CSVRecord record : records) {
和:
for (CSVRecord record : parsed) {
对于您提供的 CSV,您将获得下一个输出:
AAL -21.583101145880306
AAPL 23.417753561072438
ADBE -16.75343297000953
TA贡献1862条经验 获得超6个赞
所以这里有一段对我有用的代码,如果我理解你的问题,你只想“读取”csv文件中的每一列和每一行,希望有所帮助。
br = new BufferedReader(new InputStreamReader(new FileInputStream(archivo), "UTF8"));
while ((line = br.readLine()) != null) {
if(a!=0){
String[] datos = line.split(cvsSplitBy);
System.out.println(datos[0] + " - " + datos[1] + " - " + datos[2]);
}
a++;
}
添加回答
举报