gpt4 book ai didi

java - 读取 CSV 文件时出现的问题让我很困惑

转载 作者:行者123 更新时间:2023-11-30 09:35:34 25 4
gpt4 key购买 nike

我正在尝试编写一种方法,它只读取 CSV 文件并存储文件中的数据。这是我尝试读入的 CSV 文件的屏幕截图的链接,以及此方法的代码:

http://i.imgur.com/jsGTg.png

public static void correctPrices(String correctfile) {

String data;
Date date;
SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");

File correctedfile = new File(correctfile);
Scanner correct;

try {

correct = new Scanner(correctedfile);

correct.nextLine(); //to avoid reading the heading
ArrayList<Date> correctdate = new ArrayList<Date>();
ArrayList<String> correctdata = new ArrayList<String>();

while (correct.hasNext()) {

correctdata.add(correct.nextLine());
//data = correct.nextLine();
//String[] corrected = correct.nextLine().split(",");
//date = formatter.parse(corrected[0]);
//correctdate.add(date);

}

for (int i = 0; i < correctdata.size(); i++) {

System.out.println(correctdata.get(i));

}

}

catch (FileNotFoundException ex) {

Logger.getLogger(DataHandler.class.getName()).log(Level.SEVERE, null, ex);

}

}

正如预期的那样,此代码将输出文件的最后两行。但是,当我取消注释时 data = correct.nextLine();在 while 循环中,输出将只返回 CSV 的第二行,而不是最后一行。我对此有点困惑?我试图做的就是将该行存储到另一个变量中,为什么最后一行会被省略?感谢您的帮助和时间,如果您需要任何其他信息,请告诉我!

最佳答案

问题是,当您调用 correct.nextLine() 时,它会读取一行,然后将文件中的指针递增到您正在读取的位置。由于您在循环中多次调用它,它会多次递增指针,从而跳过行。您应该做的只是在 while 循环的开头使用

读取该行一次
data = correct.nextLine();

然后用 data 替换它出现在循环中的所有其他地方的 correct.nextLine()

换句话说,您的 while 循环看起来像

while (correct.hasNext())
{
data = correct.nextLine();
correctdata.add(data);
String[] corrected = data.split(",");
date = formatter.parse(corrected[0]);
correctdate.add(date);
}

关于java - 读取 CSV 文件时出现的问题让我很困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11300201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com