野球の統計のタブ区切りファイルをスキャンする関数を作成しました。
public static ArrayList dataRead() throws FileNotFoundException {
//ArrayList array = new ArrayList<ArrayList>();
Scanner s = new Scanner(new File("c:\\stats.txt")).useDelimiter("\r");
ArrayList<String> array = new ArrayList<String>();
int i = 0;
while(s.next() != null) {
String currentLine = s.next();
Scanner split = new Scanner(currentLine).useDelimiter("\t");
for(int j = 0; j < 16; j++) {
System.out.print(split.next() + " ");
j++;
}
System.out.println("\r");
}
s.close();
return array;
}
この関数は、ファイルの最後まで機能します。私の知る限り、while ループは null を返すため、ファイルの最後で閉じる必要がありますが、代わりに noSuchElement エラーが発生し続けます。ファイル サイズを保証できれば、そのサイズで for ループを使用するだけですが、チームのサイズは技術的に異なる可能性があるため、それはできません。スキャナーを閉じることができるように、ループ中にファイルスキャナーを適切に終了するにはどうすればよいですか?