2 回答

TA貢獻(xiàn)1752條經(jīng)驗(yàn) 獲得超4個(gè)贊
您只能Iterable在Java 中迭代一次,在您的情況下CSVParser parsed實(shí)現(xiàn)Iterable<CSVRecord>.
因此,您僅在第一次計(jì)算AAL 的統(tǒng)計(jì)數(shù)據(jù)時(shí)對(duì)其進(jìn)行迭代,在分析AAPL和ADBE 的數(shù)據(jù)期間,它將作為空數(shù)據(jù)處理。
您可以通過(guò)引入 helper list init 來(lái)處理這個(gè)問(wèn)題,parsed在for循環(huán)之前添加下一個(gè)代碼(當(dāng)然,這是一個(gè)單行解決方案,例如在 Java 8 中,但此選項(xiàng)也適用于早期版本):
List<CSVRecord> records = new ArrayList<>();
for (CSVRecord record : parsed) {
records.add(record);
}
并更改下一行:
for (CSVRecord record : records) {
和:
for (CSVRecord record : parsed) {
對(duì)于您提供的 CSV,您將獲得下一個(gè)輸出:
AAL -21.583101145880306
AAPL 23.417753561072438
ADBE -16.75343297000953

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個(gè)贊
所以這里有一段對(duì)我有用的代碼,如果我理解你的問(wèn)題,你只想“讀取”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++;
}
添加回答
舉報(bào)