質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Q&A

1回答

5175閲覧

CSVファイルを用いたソートプログラム(バブルソート)の作成方法が分からない

退会済みユーザー

退会済みユーザー

総合スコア0

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

0グッド

0クリップ

投稿2020/05/19 11:50

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;
}
}
}
}
}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/05/19 12:01

とりあえずインデントを正しくつけることから始めてください。
Zuishin

2020/05/19 12:10

で、コピペ元みつけました。 https://saycon.co.jp/archives/3493 課題のコードのどこにこれを挿入すればいいかわからないわけですね? これわからないようだと、課題をこなしてもすぐついていけなくなるので、とりあえず勉強してください。
退会済みユーザー

退会済みユーザー

2020/05/19 14:19

とりあえず CSVを読み込む処理が入ってないので入力から勉強しましょう。 ソートはその先です
momon-ga

2020/05/19 15:03 編集

Collections.sort(list); って、あるけど本当にバブルソートでやりたいの? バブルソートのアルゴリズムなんて覚えるほどのもんでもないし、実装することまずないし バブルソード使ってソートしてたら、普通にリジェクトするよ。 あ・・・すでに退会してたか。
guest

回答1

0

まあ、まずcsvファイルを読み込む処理がちゃんとできていないので出力ファイルもおかしくなります。
読み込んだcsvファイルのデータはちゃんとlistに入っていますか?
もう一度処理を確認してみてください。

で、バブルソートについては記載のコードを組み込んだとしても目的の処理結果は得られません。
まず、バブルソートがどういう仕組みで並べ替えを行うかを理解し、そのうえで点数の並べ替えと同時に学籍番号も一緒に動かさなければなりません。
バブルソートの仕組みをきちんと理解してください。コピペ元のサイトにも解説がありますよね?それを読んだり、図を書いてみたりしてちゃんと理解してください。課題のソート方法はそれからです。

最後に、学校の課題か会社の課題かは存じ上げませんが、

もしわかる方がいらっしゃいましたら回答とコードを載せていただけると幸いです。

という丸投げ上等の姿勢では全く実力がつきませんし、ここの回答者のヘイトが上がるだけです。もっと自分で考え、可能なら周りの人に相談し、コードを見てもらってください。
で、ご自分でソートのコードを書いてみて、行き詰った部分をまた質問しに来てください。

投稿2020/05/19 14:13

hope_mucci

総合スコア4447

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問