私は少し助けを求めています。私は少しの成功でほとんどグーグルをしてきました。テキストファイルの解析が次の行に移動しないとき
私はプログラミングが初めてで、これは私の愚かな監督だと確信しています。
以下のコードは、タブ区切りの.txtドキュメントを読むことを目的としています。 .txtファイルは6つの列にフォーマットされています。現在、ファイルを移動するときに、文字列を適切な値型に解析し、それをそれぞれの変数に代入します。コードはここにある:私は最初の行の最後の列に達したとき、可変料金を改行はwhileループをトリガされていない何らかの理由で1列6、行2列1行に設定されて
try {
s = new Scanner(new BufferedReader(new FileReader(file))).useDelimiter("\t");
while (s.hasNextLine()) {
group = Integer.parseInt(s.next());
death = Integer.parseInt(s.next());
name = s.next();
sex = s.next();
age = Integer.parseInt(s.next());
fare = Double.parseDouble(s.next());
System.out.println("Class = " + group); // Test that value is being assigned
System.out.println("Death = " + death); // Test that value is being assigned
System.out.println("Name = " + name); // Test that value is being assigned
System.out.println("Gender = " + sex); // Test that value is being assigned
System.out.println("Age = " + age); // Test that value is being assigned
System.out.println("Fare = " + fare); // Test that value is being assigned
}
} finally {
if (s != null) {
s.close();
}
}
再起動します。
私は、whileループが行末で再起動しない理由を理解できますか?
1 5 Bryan male 25 211.3375
1 2 Jimmy male 22 151.5500
この約1200行があります:
ファイルは次のようになります。このループを実行すると、最初の行の最後に運賃= 211.3375を設定しようとすると、以下のエラーが発生します。なんらかの理由で、改行はループをリセットしていません。改行はタブとして解釈されないが、これを修正する方法はわからないとしか思えない。
Exception in thread "main" java.lang.NumberFormatException: For input string: "211.3375 1"
正直言って、私はあなたの流れを変更して文字列に読み込んだ後、タブのcharを使ってString.splitを行うようにしています。明らかにあなたはEOLチャーを読んでいません。 –
'Scanner'クラスに' nextInt'と 'nextDouble'があるとき、なぜ' Integer#parseInt'か 'Double#parseDouble'を使うのですか? –