• ベストアンサー

データの読み込みについて

data.txt----- kokugo,10,50,33 eigo,80,11,40 rika,10,80,80 -------------- 最近JAVAをはじめたばかりです。 このようなデータがあるのですがこれを 名前 - 国語の得点 - 英語の得点 - 理科の得点 のように格納して表示させたいのですが今詰まっています。 データの読み込みは出来たのですが格納の仕方がさっぱり分からないので教えてください

質問者が選んだベストアンサー

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

・テキストファイルのデータ構造の説明がない ・表示する際の「名前」に相当するものがテキストファイルに見あたらない。 ・「格納」という言葉をどういう意味で使っているか  (読み込んだのならどこかに格納されているのでは?)

cyakopen
質問者

補足

回答ありがとうございます 読み込んだデータですが String  data; StringTokenizer st; data = new File("data.txt"); br = new BufferedReader(new FileReader(data)); line = br.readLine(); st = new StringTokenizer(line, ","); このような感じでいまのところまでは出来てるのですが どうすれば配列に格納できるのでしょうか?

その他の回答 (4)

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

整理すると、 data.txt----- kokugo,10,50,33 eigo,80,11,40 rika,10,80,80 -------------- というデータから、    国 英 理 Aさん-10-80-10 Bさん-50-11-80 Cさん-33-40-80 という表示をするということですか? そうすると、「Aさん」「Bさん」「Cさん」という文字はどこから取得するのでしょうか?

noname#246547
noname#246547
回答No.4

>名前のデータですが・・・このような構造になっています。 いや、名前ってAさん、Bさん、Cさんとかではないの? 出力したい結果って、Aさん、Bさん、Cさん(もちろんこれらの名前は仮称ですよ)の3教科の結果だと思っているのですけど・・・ 出力したい結果は推測できるけど、「Aさん」等の具体的な名前はどこに登録したものを使用するのですか? それとも、名前はプログラム内部で固定出力なのかな?? >分割したものを配列に入れて行けばいいのでしょうか? えーっと、先の回答で String[] data = record.split(","); のdataに1レコード分の情報が配列として既に入っているのですが・・・ 3教科のデータをとりあえず保持したいなら、 line = br.readLine(); String[] kokugo= line.split(","); line = br.readLine(); String[] eigo= line.split(","); line = br.readLine(); String[] rika= line.split(","); とすれば、教科ごとの点数と教科名が配列に保持されます。 あとはループ文を使用して、 出力結果通りにデータを吐き出すだけです。 for(count=1;count <=3;count+){ System.out.println(kokugo[count] + " " + eigo[count] + " " + rika[count]); //上記の出力は点数だけです。名前は何を出すべきかあなたからの提示が無いので、回答できません。 //countを1から始めたのは、配列の先頭には"kokugo"等の点数以外のデータが含まれているためです。 }

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.3

質問と「回答の補足」に書かれている内容が一致しないので、何をしたいのかわからないのです。 質問には 「『名前』-国語の得点-英語の得点-理科の得点」 と書かれていますよね? ところがANo.2の回答の補足では 「名前   得点  kokugo,  10, 50, 33  eigo,   80, 11, 40  rika,   10, 80, 80 」 となっており、名前=「国語」「英語」「理科」であるように見えるのです。 もし、質問の通りの解が欲しいのだとしたら、kokugo,10,50,33 とは「各個人の国語の得点が羅列されている」と思われるのです。 すると、データが足らない(=各個人の名前(縦の列)がない)ということになるのです。 わかりますでしょうか? データ不足です。 こんな風なデータなら問題ないです。 1行目に個人の名前が入っている Aさん,Bさん,Cさん 2行目からは各科目のデータが入っている kokugo,10, 50, 33 eigo,80, 11, 40 rika,10, 80, 80 これなら、 Aさん-10-80-10 Bさん-50-11-80 Cさん-33-40-80 と表現することができるので、質問の内容を満たせますが。 初心者との事ですが、もっと落ち着いて 「何が求められているのか」「求められているものを導くには何が必要なのか」 を考えるようにしてください。コーディング以前の所でつまづいておられるようです。

cyakopen
質問者

補足

回答ありがとうございます。 書き方があいまいでした。 PED02744さんのおっしゃられている通りです。    国 英 理 Aさん-10-80-10 Bさん-50-11-80 Cさん-33-40-80 のデータになっています。 もうちょっと分かりやすく自分のデータも修正しようと思います。

noname#246547
noname#246547
回答No.2

>データの読み込みは出来たのですが格納の仕方がさっぱり分からないので ファイルを開いてレコードの取得は出来たが、文字列の分解方法がわからないということかな? ファイルから読み込んだ1レコードが String record; に入っていると仮定した場合、 String[] data = record.split(","); でdata配列にはカンマごとに分割したデータが入ります。 参考URL参照。 でも、「名前」のデータはどこにあるの?

参考URL:
http://www.javaroad.jp/java_character6.htm
cyakopen
質問者

補足

回答ありがとうございます 名前のデータですが 名前   得点 kokugo,  10, 50, 33 eigo,   80, 11, 40 rika,   10, 80, 80 -------------- このような構造になっています。少々分かりにくくてすみません。 おかげさまでデータの分割には成功しました。 分割したものを配列に入れて行けばいいのでしょうか?

関連するQ&A