アプリ版:「スタンプのみでお礼する」機能のリリースについて

■JAVAのテキストの取り出し方について質問がございます。
■テキストから一番最初の文字列を取り出したいのですが、どのような 方法があるか教えていただきたく参りました。
■テキストの名前は shokijii.texで 状態は

 問題,回答番号,解説,0,文,1,文,2,文,3,文
 問題,回答番号,解説,0,文,1,文,2,文,3,文
 問題,回答番号,解説,0,文,1,文,2,文,3,文

 となっております。

■今のところプログラムの記述は
BufferedReader br =null;
br =new BufferedReader(new FileReader(shokuji.txt));

■と定義していますが、テキストの最初の文字列を取り出すには
   br =new BufferedReader(new FileReader(shokuji.txt));
                        ↓
                     ■ここの()内ので
                     どのように記述したら
                     よいでしょうか?
■また()内での定義にかからわらず、
 ・できそうな方法
テキストは調整可能ですので、
 ・テキストに付け加えこのように定義したら取り出せるよ
といった提案、意見などもございましたら、どうかお教えください。
お願い申し上げます。
 

A 回答 (3件)

>br =new BufferedReader(new FileReader(shokuji.txt));



br =new BufferedReader(new FileReader("shokuji.txt"));
としなければなりません。
FileReaderのコンストラクタ(の一つ)はStringでファイル名を受け取ります。
詳しくは、FileReaderクラスのコンストラクタを調べてください。

>テキストの最初の文字列を取り出すには

というのは、「,」で区切られた最初の文字列という意味ですね。
ならば、
String str = br.readLine();
で1行目を読んだあと、
String[] part = str.split(",");
とすると、part[0] に最初の文字列が part[1] に2番目の文字が...
というぐらいに分割されます。

詳しくは、Stringクラスのsplitメソッドを調べてください。
    • good
    • 0

>   br =new BufferedReader(new FileReader(shokuji.txt));


>                        ↓
>                     ■ここの()内ので
>                     どのように記述したら
>                     よいでしょうか?
BufferedReaderクラスのJavaDocを読むと良いですよ。

>■テキストから一番最初の文字列を取り出したいのですが、どのような 方法があるか教えていただきたく参りました。
「一番最初の文字列」の意味がわかりません。
が、
一番最初の行を読みたいなら、BufferedReaderクラスのreadLineメソッドを使えば良いかと。
一番最初の文字が読みたいのなら、↑で1行読んだあとに、StringクラスのcharAtメソッドを使えば良いかと。
「一番最初の文字列」が(テキストの内容がよくわかりませんが、もし、「CSV」になっているとして)最初のカンマまでの文字列なら、java.utilパッケージのStringTokenizerクラスを使うと良いですよ。
(もしくはStringクラスのsplitメソッドなど。)
    • good
    • 0
この回答へのお礼

返信遅くなり申し訳ありません。アドバイスありがとうございます。
charAt()メソッドがつかえそうです。Stringメソッドはいろいろありますので、それぞれを理解しうまく使えたらと思っております。
今後とも、アドバイスを宜しくお願い致します。

お礼日時:2007/12/16 16:52

これが最後のアドバイスになるかと思いますが、もう一言の


私の考えを述べさせて頂きます。


質問者の方におかれましては、”MVCパターンの考え方”はおろか、残念ながら
”オブジェクト指向とは何か”という事に関しても理解が不足しているようです。

プログラミングにおいて、
”テキストファイルを処理して、n番目の問題のp番目の項目を取り出そう”
というようなコードを書くことは決して難しいことではありません。
しかし、この様な方法は、全く
  ”オブジェクト指向設計ではない”
という事を知っておく必要があります。


オブジェクト指向設計で行うべきことは、

>■テキストの名前は shokijii.texで 状態は

> 問題,回答番号,解説,0,文,1,文,2,文,3,文
> 問題,回答番号,解説,0,文,1,文,2,文,3,文
> 問題,回答番号,解説,0,文,1,文,2,文,3,文

> となっております。

もしも、この様なテキストファイルがあるのならば、
このテキストファイルから、問題集オブジェクトを生成(復元)することです。
そして、その復元された問題集オブジェクトから、適切なメソッドを使って
所望の問題オブジェクトを取得し、そこから、問題文を取り出します。

”ご自身で課題を考えてそれを解いてみよう”という方法が
必ずしも間違っているわけではないでしょうが、そもそもの課題が
適当なのかどうかを判断できるレベルの人が身近におられないとなると
正しい方向に進むことは難しいと思われます。

私は、具体的な文字列を取り出すようなソースコードを提供することはしません。

こう書くと、私に基本的なファイル処理の能力がないのだろうと感じられるかもしれません。
しかし私自身は、紙テープ,マークシート,8インチフロッピーディスクの時代から
コンピュータプログラミングを書いていたので、ファイル入出力のコードなどは、
山ほど書き捨ててきました。
オブジェクト指向設計の今の時代に、書き捨てのコードを書く気にならない
気持ちをご理解頂ければ幸いです。
この気持ちが解る様になったら、オブジェクト指向の発想が身に付いたと
言えるのかもしれません。
    • good
    • 0
この回答へのお礼

何度もアドバイスありがとうございます。
私のプログラムに対する知識のなさは、就職先に理由がありました。文字の世界とは不思議なものです。
私が上記のように言われるのも、予想しておりました。しかし、どなたかアドバイスしてくださるかと思い,迷いまがらも、この場で質問さえていただきました。
上記の回答者の方を含め、アドバイスをしてくださった方には感謝の気持ちでいっぱいです。
今までいくつかの言語が授業でありましたが、その中でJAVAは一番楽しめたかと思っております。難しいことにはかわらりありませんでしたが、しかし楽しんでできるか、できないかで理解は大きく違いますね。
余計な話を申し訳ありません。最後とは残念ですが、今までのアドバイス本当にありがとうございました。

お礼日時:2007/12/16 17:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!