CSV ファイルを単純に読み取り、ファイルからデータを保存するメソッドを作成しようとしています。読み込もうとしている CSV ファイルのスクリーンショットと、このメソッドのコードへのリンクを次に示します。
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);
}
}
予想どおり、このコードはファイルの最後の 2 行を出力します。ただし、コメントを外すと data = correct. nextLine(); while ループでは、出力は CSV の 2 行目のみを返し、最後の行は返しません。私はこれに少し困惑していますか?私がやろうとしたことは、その行を別の変数に格納することだけでしたが、最後の行が省略されるのはなぜですか? ご協力いただきありがとうございます。追加情報が必要な場合はお知らせください。