将CSV日期转换为arraylist_Java
我正在尝试使用ArrayList单独保存数据。 但是,在将一个数据保存到数组中后,它跳过一行,然后保存数据。请帮我解决这个问题将CSV日期转换为arraylist_Java,java,csv,arraylist,Java,Csv,Arraylist,我正在尝试使用ArrayList单独保存数据。 但是,在将一个数据保存到数组中后,它跳过一行,然后保存数据。请帮我解决这个问题 private void readCSVFile(String tickerCode, File file) { System.out.println("Reading file " + tickerCode); System.out.println(file.getPath()); try { ArrayList<List
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;
}
private void readCSVFile(字符串tickerCode,文件){
System.out.println(“读取文件”+tickerCode);
System.out.println(file.getPath());
试一试{
ArrayList行=新的ArrayList();
BufferedReader br=新的BufferedReader(新文件读取器(文件));
csvreaderheaderware csvReader=新的csvreaderheaderware(br);
int numLine=0;
字符串[]值;
而((value=csvReader.readNext())!=null){
ArrayList数据=新的ArrayList();
数据。添加(值[0]);
数据。添加(值[1]);
数据。添加(值[2]);
数据。添加(值[3]);
数据。添加(值[4]);
数据。添加(值[5]);
数据。添加(值[6]);
行。添加(数据);
如果(numLine==0){
系统输出打印(“StartDate=“+值[0]);
}
if((csvReader.readNext()==null)){
System.out.println(“EndDate=“+value[0]);
}
++努姆林;
}
如注释中所述,您不能在循环内使用
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);
}
ArrayList line=new ArrayList();
BufferedReader br=新的BufferedReader(新文件读取器(文件));
csvreaderheaderware csvReader=新的csvreaderheaderware(br);
int numLine=0;
字符串[]值;
字符串endDate=null;
而((value=csvReader.readNext())!=null){
ArrayList数据=新的ArrayList();
数据。添加(值[0]);
数据。添加(值[1]);
数据。添加(值[2]);
数据。添加(值[3]);
数据。添加(值[4]);
数据。添加(值[5]);
数据。添加(值[6]);
行。添加(数据);
如果(numLine==0){
系统输出打印(“StartDate=“+值[0]);
}
endDate=值[0];
++努姆林;
}
如果(endDate!=null){//需要检查null,以防CSV没有任何行
System.out.println(“EndDate=“+EndDate”);
}
如果((csvReader.readNext()==null)){-readNext
确实读取了下一个,我认为您不应该这样做。