テキストファイルからデータを読み込んで、ソート(金額順)をかけたいのですが、文字列で読み込んでいるため、金額でソートしようとしてもうまくいきません。
テキストデータは(1 Hiyomi Tanak Oosaka 012-3456-7890 3000)が何行かあるものです。
最後の数字が金額となっているので、ここを一一度ソートしてから、抽出しようと考えています。
何かヒントがあれば、ご教示頂ければと思います。
package account;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Test08 {
private static final String FILE_PATH = "C:\\Users\\itcuser\\Downloads\\account.txt"; public static void main(String[] ars) { List<String> moneyList = new ArrayList<String>(); // ファイルの読み込み read(moneyList); } public static void read(List<String> moneyList) { BufferedReader br = null; try { br = new BufferedReader(new FileReader(FILE_PATH)); String line = null; // ファイルの読み込み while ((line = br.readLine()) != null) { // 文字列を指定した正規表現に一致する位置で分割する。 String[] array = line.split("\\s"); // リストに文字列を詰める if (array.length == 6) { moneyList.add(array[5] + " " + line); } } // 昇順でソートする // Collections.sort(moneyList); try { FileWriter fw = new FileWriter("C:\\Users\\itcuser\\Downloads\\test.txt", true); BufferedWriter bw = new BufferedWriter(fw); for (String str : moneyList) { bw.write(str); bw.newLine(); System.out.println("書き込みました。"); } bw.close(); } catch (IOException ex) { ex.printStackTrace(); } // 以下エラー処理 } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (br != null) { br.close(); } } catch (IOException e) { e.printStackTrace(); } } { } }
}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/21 07:57
2017/02/21 08:19