java - CSV 日期到 arraylist_Java
问题描述
我正在尝试使用 ArrayList 单独保存数据。但是,将一个数据保存到数组中后,它会跳过一行然后保存数据。请帮我解决这个问题。
private void readCSVFile(String tickerCode, File file) {
System.out.println("Reading file " + tickerCode);
System.out.println(file.getPath());
try {
ArrayList<List<String>> line = new ArrayList<>();
BufferedReader br = new BufferedReader(new FileReader(file));
CSVReaderHeaderAware csvReader = new CSVReaderHeaderAware(br);
int numLine = 0;
String[] values;
while ((values = csvReader.readNext()) != null) {
ArrayList<String> data = new ArrayList<>();
data.add(values[0]);
data.add(values[1]);
data.add(values[2]);
data.add(values[3]);
data.add(values[4]);
data.add(values[5]);
data.add(values[6]);
line.add(data);
if(numLine == 0){
System.out.print("StartDate = "+ values[0]);
}
if((csvReader.readNext() == null)){
System.out.println(" EndDate = " + values[0]);
}
++numLine;
}
解决方案
如评论中所述,您也不能csvReader.readNext()
在循环内使用来检查下一个元素是否为null
,因为它实际上会读取下一行。因此,您可以做的是将最后处理的行的日期保存在变量中,然后在 while 循环完成后将其打印为 EndDate。
ArrayList<List<String>> line = new ArrayList<>();
BufferedReader br = new BufferedReader(new FileReader(file));
CSVReaderHeaderAware csvReader = new CSVReaderHeaderAware(br);
int numLine = 0;
String[] values;
String endDate = null;
while ((values = csvReader.readNext()) != null) {
ArrayList<String> data = new ArrayList<>();
data.add(values[0]);
data.add(values[1]);
data.add(values[2]);
data.add(values[3]);
data.add(values[4]);
data.add(values[5]);
data.add(values[6]);
line.add(data);
if(numLine == 0){
System.out.print("StartDate = "+ values[0]);
}
endDate = values[0];
++numLine;
}
if (endDate != null) { // Need to check null in case your CSV didn't have any rows
System.out.println(" EndDate = " + endDate);
}
推荐阅读
- flutter - 使用 Flutter 的 PetiteParser 创建 FHIRPath
- pandas - 使用 Pandas 将 M-YY 转换为日期时间
- c++ - 使用文件读取数据和写入文件时,我无法获得正确的anwser,但是当我调试时,它工作得很好
- nginx - 使用 1 个域名为多个端口设置 SSL 证书
- javascript - 如何在 vue 中使用 foreach 获取响应?
- xcode - 如果今天的日期在 SwiftUI 中的两个不同日期之间
- azure - 在 Cosmos DB 中的逻辑分区之间拆分物理分区的可用吞吐量如何?
- nginx - Nginx - 只允许从域 B 访问域 A
- ios - 有没有办法使用 Xcode 制作一个限制其他应用程序数量的应用程序?
- r - 如何编辑此代码生成的图的图例?