ここから本文です

java、ファイルの入出力、ソート、昇順

note103さん

2011/6/612:24:50

java、ファイルの入出力、ソート、昇順

ファイル名data1.txt からデータを読み込み,数の大きい順にソートした後で,
data2.txt にソートされたデータを出力するプログラムのコードを作成しなさい。
data1.txt
66
78
42
12
52
29
11
29
45
64
22
86
21
87
70
24
100
27
33
87
67
6
13
47
21
0
53
46
41
4
~~~~~~~~~~~~~~~~↓以下が私の作ったものです。
import java.io.*;

public class file {
public static void main(String[] args) {
try{
BufferedReader br=new BufferedReader(new FileReader("data1.txt"));

int[] test=new int[30];
String str;

for(int i=0;i<test.length;i++){
str=br.readLine();
test[i]=Integer.parseInt(str);
}

for(int s=0;s<test.length-1;s++){
for(int t=s+1;t<test.length;t++){
if(test[t]>test[s]){
int tmp=test[t];
test[t]=test[s];
test[s]=tmp;
}
}
}
for(int j=0;j<test.length;j++){
System.out.println(test[j]);
}

br.close();

PrintWriter pw=new PrintWriter(new BufferedWriter(new FileWriter("data2.txt")));

pw.println(str1);


System.out.println("ファイルに書き込みしました。");

pw.close();
}
catch(IOException e){
System.out.println("入出力エラーです。");
}
}
}

~~~~~~~~~~~~~~~~~ここまで

実行するとdata1.txtを昇順にした実行結果が出たのですが、これをどうやってdata2.txtに出力するのかが分かりません。

どこを直したらいいのかの指摘、校正
あるいは、実行結果をdata2.txtに出力する方法を教えてください。。
お願いします。

閲覧数:
4,405
回答数:
3
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

ii3********さん

2011/6/612:58:43

for(int j=0;j<test.length;j++){
System.out.println(test[j]);
}
br.close();
PrintWriter pw=new PrintWriter(new BufferedWriter(new FileWriter("data2.txt")));
pw.println(str1);
System.out.println("ファイルに書き込みしました。");

を、

br.close();
PrintWriter pw=new PrintWriter(new BufferedWriter(new FileWriter("data2.txt")));
for(int n : test) {
pw.println(n);
}
pw.close();

に変更する。



個人的に作るとしたら、こんな感じ。
import java.io.*;
import java.util.*;

public class Sample {
private static final String SRC_FILE = "/data1.txt";
private static final String DEST_FILE = "/data2.txt";

public static void main(String[] args) {
List<Integer> list = readFile(); // 読み込み
Collections.sort(list); // 小さい順にソート
Collections.reverse(list); // データの並びを反転
writeFile(list); // 書き込み
}

private static List<Integer> readFile() {
List<Integer> list = new ArrayList<Integer>();
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(SRC_FILE));
String str = null;
while((str = br.readLine()) != null) {
list.add(Integer.parseInt(str));
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return list;
}

private static void writeFile(List<Integer> list) {
PrintWriter pw = null;;
try {
pw = new PrintWriter(new BufferedWriter(new FileWriter(DEST_FILE)));
for (Integer n : list) {
pw.println(n);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
pw.close();
}
}
}

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

tof********さん

編集あり2011/6/613:07:07

FileWriterを使ってみたらいかがでしょうか。

//FileWriterを用意する
File f = new File("data2.txt")
try{
FileWriter fw = new FileWriter(f);

//ファイルに出力する
String s;
for(int i=0; i<test.length; i++) {
s=Integer.toString(test[i]);
fw.write(s);
fw.write("\n");
}

//後処理
fw.close();
} catch(IOException e){
System.out.println("入出力エラーです");
}

こんなカンジでいけると思います。

sin********さん

2011/6/612:35:12

個人的にはソートメソッドを探してそれを使うことをお勧めするけどね。
for(int s=0;s<test.length;s++){
pw.println(test[i]);
}
とかそんな感じでいいんじゃない?
Javaは詳しくないけれど。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる