• 締切済み

ファイル読み込みと書き込み

JAVA初心者です。 以下のscore.txtというファイルを読み込んで、result.txtというファイルに科目合計と合計の降順にソートして出力したいと思っているんですが、どう記述していいのか全然わかりません。どなたかソースを教えて下さい。(※人数や科目が増えた時に修正しないようにArrayListを使用) (score.txt) 名前,国語,数学,社会,理科,英語 山田一朗80,80,78,60,75 山田次郎40,12,50,37,89 山田三郎60,38,45,68,40 山田四郎85,95,65,57,58 山田五郎90,95,55,45,72 ↓↓↓↓↓↓↓↓↓↓↓↓ (result.txt) 順位 名前 国語 数学 社会 理科 英語 合計 1 山田一郎 80 80 78 60 75 373 2 山田四郎 85 95 65 57 58 360 3 山田五郎 90 95 55 45 72 357 4 山田三郎 60 38 45 68 40 251 5 山田次郎 40 12 50 37 89 228 科目合計 355 320 293 267 334 1569 ------------------------------------------------------------- import java.io.*; class Test { public static void main(String[] args){ File score1 = new File("score.txt"); // ファイル読み込み BufferedReader br = new BufferedReader(new FileReader(score1)); // 最終行まで読み込む while (br.ready()) { String line = br.readLine(); までは何となくわかったのですが・・・・。

  • Java
  • 回答数4
  • ありがとう数2

みんなの回答

  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.4

「データをそのまま加工せず別ファイルに書き出す」が出来たということなので 既に解決しているかもしれませんが、 ファイルの終端(最終行)に達したかどうかの判定は、 while (br.ready()) { ではありませんよ。

  • kscKane
  • ベストアンサー率62% (18/29)
回答No.3

ArrayListに関しては以下を参考にしてください。 http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/util/ArrayList.html http://www.tohoho-web.com/java/collection.htm 文字列分割は、 http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/lang/String.html#split(java.lang.String) または http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/StringTokenizer.html http://takeoba.cool.ne.jp/moreJava/token.htm あたりが参考になるでしょう。 以上を参考にして、頑張ってください^^

  • kaiza00
  • ベストアンサー率100% (2/2)
回答No.2

私も前回答された方と同じ意見なのですが、 何ができるのかを明確にしたほうが良いと思います。 (大学の授業か何かの課題であれば、回答を知りたいかもしれませんが、自力でできるところは自力でときましょう。) 全くできないのであれば、 まず、ファイルを読み込んで書き込むという処理から やると良いと思います。 (ちょっとえらそうに書いてしまって申し訳ない。)

  • kscKane
  • ベストアンサー率62% (18/29)
回答No.1

まずどんなあたりまでなら自力で書けますか? ・データをそのまま加工せず、別ファイルに書き出す。 ・データを一行丸ごとArrayListにいったん入れて、そのまま別ファイルに出せる。 ・一行分のデータをカンマで区切って取得することが出来る。 ・カンマで区切って取得したデータをArrayListに入れて、それをさらに全データを格納するArrayListに入れることが出来る。 ・個人の合計点を出せる。 ・科目の合計点を出せる。 ・個人の合計点でソートが出来る。 ・科目の合計点でソートが出来る。 ・ソート結果を表示できる。 こんな順序で考えていけば、どのあたりで分からないかが絞り込めそうです。

river_yos
質問者

お礼

返信遅れて申し訳ございません。 何とか自力でデータをそのまま加工せず、別ファイルに書き出す、というのは出来ましたが以下の・・・ ・データを一行丸ごとArrayListにいったん入れて、そのまま別ファイルに出せる。 ・カンマで区切って取得したデータをArrayListに入れて、それをさらに全データを格納するArrayListに入れることが出来る。 ・個人の合計点を出せる。 ・科目の合計点を出せる。 ・個人の合計点でソートが出来る。 ・科目の合計点でソートが出来る。 ・ソート結果を表示できる。 がわかりません・・・。わからない事ばかりで申し訳ありませんm(_ _)m

関連するQ&A

  • jspでファイルの読み込み

    jspでwebサーバーにある“1.txt”ファイルを読み込んでそれを表示するプログラムを作成したのですが、エラーが出てしまいます。サーバーの環境(jsp実行環境等)は問題ありません。以下のコードで何かおかしなところがありましたら教えてください。 <%@ page contentType="text/html" import="java.util.*,java.io.*" %> <% String result = ""; String h_s = ""; FileReader h_fr = new FileReader("1.txt"); BufferedReader h_br = new BufferedReader(h_fr); while(true){ h_s = h_br.readLine(); if (h_s == null){ break; } result = result + h_s; } %> <%= result %>

    • ベストアンサー
    • Java
  • javaで大量のファイルを読み込む方法

    javaプログラミングについて質問です。 例えば、a1.txt~a100.txtの100個のテキストファイルがある として、これをループか何かを使って順番に読み込みたいのですが、 そのような方法はあるのでしょうか。 // ファイル入力ストリームを取得 BufferedReader br = new BufferedReader(new FileReader("a1.txt")); BufferedReader br2 = new BufferedReader(new FileReader("a2.txt")); BufferedReader br3 = new BufferedReader(new FileReader("a3.txt")); ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ BufferedReader br100 = new BufferedReader(new FileReader("a100.txt")); という風に書くのが面倒に思っています。 宜しくお願いします。

    • ベストアンサー
    • Java
  • エクセルVBAで複数VLOOKUP

    お世話になります エクセルが3つあるとします下記 大阪方面.xls コード|太郎|次郎|三郎|四郎| 0111|  1|   | | 1 | 0112|  |  1| | | 0113|  |  1| | | 0114|  |   | | | 京都方面.xls コード|田中|次郎|五郎|四郎| 0111|  2|   | | 2 | 0112|  |  1| | | 0113|  |  3| | 1| 0114|  1|   | | | 奈良方面.xls コード|田中|次郎|五郎|四郎| 0111|  2|   | | 2 | 0112|  |  1| | | 0113|  |  3| | 1| 0114|  1|   | | | 上記3件のエクセルをを合計させたいのですが ■問題点 *名前がランダムに入っている *名前の件数も決まっていない(セルのF20~BH20までのどれかに名前が入る)行数は1619です。 上記の内容からすべてに関数を入れるのは非常に重たくなりそう *エクセルファイルは3つとは限らない。 *エクセルファイル名が決まっていない ■やりたいこと VBAのフォームにテキストボックス(ファイル場所表示用)を設置しダイアログボックス呼び出し用ボタンを設置(10個ぐらい) 必要なxlsを指定し実行ボタンで下記のような計算をさせたいのが理想です。 合計.xls コード|太郎|次郎|三郎|四郎|田中|五郎| 0111|  1|   | | 5| 4 | | 0112|  |  4| | | | | 0113|  |  7| | 2| | | 0114|  |   | | | 2 | | Win XP オフィース2003 わかる方ご教授願います。

  • ファイルの読み込み

    "DataFile"に何行か文字列がはいっており、下のソースでそれをテキストボックスにすべて出力したいのですが、1行しか読まれません。 やり方を教えてください。 String moji = null; FileRead(){   try {     BufferedReader br = new BufferedReader( new FileReader( "DataFile.txt" ) );     while ((moji = br.readLine()) != null){       taList.setText(moji);     }     br.close();   }   catch ( Exception e ) {     System.out.println( e.getMessage() );   } }

    • ベストアンサー
    • Java
  • Accessで一致データを抜いて項目をずらす方法

    Access2000を使用して、テーブル1のフィールド2~5で、テーブル2と一致したフィールドを抜いて項目をシフトさせたいのですが、どのような方法があるのでしょうか。 <元テーブル>    フィールド→ 氏名, 名1, 名2, 名3, 名4 ・テーブル1の項目 山田,花子,次郎,三郎,四郎           鈴木,五郎,六郎,七朗,和子           佐藤,和子,一郎,太郎,四郎 ・テーブル2の項目 山田,花子           鈴木,七朗           鈴木,和子          佐藤,一郎           佐藤,四郎           佐藤,和子 <変換後テーブル>テーブル1を基準として   フィールド→ 氏名, 名1, 名2, 名3, 名4           山田,次郎,三郎,四郎,null           鈴木,五郎,六郎,null,null           佐藤,太郎,null,null,null 分りずらい説明で申し訳ありませんが、宜しくお願いします。

  • テキストファイルからの読み込みエラー

    app = getServletConfig().getServletContext(); fr =new FileReader(app.getRealPath("dbsplORA.txt")); br = new BufferedReader(fr); strPar = br.readLine(); br.close(); このような感じで、テキストファイルからの読み込みを行っていますが,なぜかいつもファイルが見つかりませんといわれます. ファイル自体はちゃんと名前も全半角あっています。 エラーメッセージに出ているものをコピーして貼り付けると動作します。 今回、Noを振り分け,ループしてたくさんのファイルを読み込もうと考えていますが,これのおかげで作成できません。 すみませんが、教えてもらえないでしょうか。 そして、今,仮ループで貼り付けて動かしていますが、最後らへんのテキストを読むとMalformedInputExceptionがでます。 ちなみに、ループで読み込みという意味は strBan = "dbsql"+strBan+".txt";//strBanはカウンターされている。 という意味です。よろしくお願いします。

    • ベストアンサー
    • Java
  • unicodeファイルの読み込み

    javaアプレット上で BufferedReader file = new BufferedReader(new FileReader("C:/test/list.txt")); で外部テキストファイルを読み込んでいるのですが、この外部テキストファイルの文字コードをANSIからUnicodeに変えるとプログラムが動かなくなります。日本語やアルファベットではない文字の保存のためにテキストをUnicodeにて保存しなければならないのですが、どうすればUnicodeのテキストファイルを読み込むことができますか。

    • ベストアンサー
    • Java
  • エクセルで文字列を数えて一覧表にしたいのですが

    たとえばですが、2人一組で配達に行きます。 メンバーは、太郎、次郎、三郎、四郎、五郎・・・と多人数です。 A1に太郎、B1に三郎 A2に次郎、B2に五郎 A3に太郎、B3に次郎 ・ ・ ・ と、いうような表ができます。 このとき、*郎は何回配達にいったのかをカウントしたいのです。 *郎は、A、Bのどちらに登場するかわかりませんし、 何回も登場しますし、組み合わせもばらばらです。 最終的に、太郎 15回、次郎 8回、三郎 21回・・・というように分かるようにしたいので、 仮にD1に太郎、E1に次郎、F1に三郎・・・の名前 (ダブって登場する名前を一つにまとめて、登場する全ての名前を残したい)、 D2に太郎、E2次郎、F2に三郎の回数(登場した名前の回数を数字で求めたい) というようにしたいのです。 エクセルの詳しい方、よろしくお願いします。

  • java配列を用いたテキスト(画像)読み込みについ

    javaで配列を用いたテキスト(画像)読み込みについて。 教えて下さい。よろしくお願いします。 こんにちは。 現在、javaでプログラミング練習をしているものです。 複数のテキストファイルをランダムに表示させる、というプログラムで、 知恵袋であった、以下の質問を参考に作っています。 (これを応用して、画像のランダム表示を作りたいと考えています) http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1229836927... 自分なりに書き換えてみたりしましたが、上手く動きませんでした。 ((Unknown Source)・・・と表示されてしまいます;) 普通のテキストファイル読み込み、テキストフィールドに表示するプログラムを作りました。 これは正常に動きます。 もし以下のプログラムを活用してランダム表示ができる方法をご存知の方、 是非教えてください。 よろしくお願いします。 //テキスト読み込み try{ File file = new File("adv/testsc.txt"); if (checkBeforeReadfile(file)){ BufferedReader br = new BufferedReader(new FileReader(file)); String result = ""; String allString = ""; while((result = br.readLine()) != null){ allString += result + "\n"; } txtar1.setText(allString); String str; while((str = br.readLine()) != null){ txtar1.setText(str.toString()); } br.close(); }else{ txtar1.setText("ファイルが見つからないか開けません"); } }catch(FileNotFoundException a){ System.out.println(e); }catch(IOException a){ System.out.println(e); } どうぞよろしくお願いいたします。m(_ _)m

  • エクセルのことで質問です

    うまく説明ができないかもしれないのですがよろしくお願いします<(_ _)> シート1 会社名  氏名   携帯番号 ○○会社 山田太郎 090-****-**** ○○会社 佐藤次郎 090-****-**** ○○会社 田中三郎 090-****-**** ××会社 松尾四郎 090-****-**** ××会社 小泉五郎 090-****-****         ・         ・         ・ シート2 会社名  氏名   携帯番号 ××会社 松尾四郎 というデータがあって、シート2で××会社の松尾さんの携帯番号を抽出したい時は何の関数を使えば良いでしょう?

専門家に質問してみよう