CSVファイルを用いたソートプログラム(バブルソート)の作成方法が分からない
Java初心者です。
現在、課題でソートプログラムの作成を以下の手順で行っております。
1.学生番号と点数で構成されたデータを1000個作成し、CSV形式(カンマ区切り)で保存
(このとき、学生番号と点数を保持し、学生番号は重複しないようにする。)
2.作成したデータを読み込み、点数が高い順にソートして別ファイルに書き出すプログラムを作成
(今回はバブルソートで作成します。)
以下に示すのは、現時点で作成しているCSVファイルの入出力処理を行うソースコードになります。
ここからバブルソートのプログラムを作成するには、どのようにコードを構成すればよいのか分かりません。
もしわかる方がいらっしゃいましたら回答とコードを載せていただけると幸いです。
よろしくお願いします。
発生している問題・エラーメッセージ
進捗状況としては、作成したCSVファイルを読み取り、テキストファイルに出力したのですが、[]という文字しか表示されておりません。
該当のソースコード
Java
1import java.io.BufferedWriter; 2import java.io.File; 3import java.io.FileNotFoundException; 4import java.io.FileReader; 5import java.io.FileWriter; 6import java.io.IOException; 7import java.io.PrintWriter; 8import java.util.ArrayList; 9import java.util.List; 10import java.util.Collections; 11import java.util.Comparator; 12 13public class TestBubbleSort { 14public static void main(String[] args) { 15final int n = 50000; 16ArrayList <String> list = new ArrayList<String>(); 17String file1 = "ソートプログラムの作成(2020-05-14).csv"; 18String file2 = "out1.txt"; 19 20//file1からデータを入力 21try { 22FileReader fr = new FileReader(file1); 23BufferedReader br = new BufferedReader(fr); 24String line; 25while ((line = br.readLine()) != null) { 26String[] array = line.split(",");// 配列arrayに文字列格納 27} 28br.close(); 29} 30catch (FileNotFoundException e) { 31System.out.println(file1+"ファイルが見つかりません。"); 32} 33catch (IOException e) { 34System.out.println(e); 35} 36 37Collections.sort(list); 38System.out.println(list); 39 40//file2に結果を出力 41try { 42BufferedReader br = new BufferedReader(new FileReader(file1)); 43PrintWriter pr = new PrintWriter(new BufferedWriter(new FileWriter(file2))); 44br.readLine(); 45pr.println(list); 46br.close(); 47pr.close(); 48} catch (IOException e) { 49System.out.println(e); 50} 51} 52}
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
こちらが今回私が適用する予定であるバブルソートのソースコードになります。
public class BubbleSort {
public static void main(String[] args) {
int[] data = { 30, 60, 70, 90, 20 };
sort(data);
for(int element : data){
System.out.print(element + " ");
}
}
public static void sort(int[] data) {
for(int i = data.length - 1; i > 0; i--){
for(int j = 0; j < i; j++){
if(data[j] > data[j + 1]){
int tmp = data[j + 1];
data[j + 1] = data[j];
data[j] = tmp;
}
}
}
}
}