- PR -

ファイルI/Oの基本ですが・・

投稿者投稿内容
norinorimi
ベテラン
会議室デビュー日: 2005/07/28
投稿数: 51
投稿日時: 2005-08-08 17:31
MARUさま、がるがるさま

すいませんでした。本のデータはお見せできないのでイジッタラ
分かりづらくなりました。皆様本当にすいません。

ID=1の時は
---------------
Twelve of these samples were positive for the presence of
microsporidia and could be confidently identified;
11 of them were positive.
--------------
が欲しい部分です。
この部分を抽出するためにどうすればよいかが分かりません。
大学の課題では、文字ではなく単なる
ABCDEFGH・・・
のようなアルファベット数行でした。ただし規則性がないので
規則性のある「<」、に着目して何とかとってこようとしているのです。
分かりづらくてすいませんでした。

実際には、
< ID=1 This is First
AAABBBCCCDDD
EEEFFFGGGHHH
< ID=2 this is Second
ABCDBDBATHEW
HTREWRHTWEQH
HTQWAHREWHHA
(以下省略)

ってな感じです。
ここから、
ID=1
AAABBBCCCDDD
EEEFFFGGGHHH
ID=2
ABCDBDBATHEW
HTREWRHTWEQH
HTQWAHREWHHA
(以下省略)
という風にするのが課題です。

お手数をおかけしてすいませんでした。

norinorimi
ベテラン
会議室デビュー日: 2005/07/28
投稿数: 51
投稿日時: 2005-08-08 17:33
小僧さま
単にReadBufferなどで読み込み、三つのファイルにランダムに書き込むだけの課題です。
分かりづらくてすいませんでした。

山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-08-08 17:33
ファイルI/Oのプログラミングではなく、文字列操作のコーディングの仕方がわからないということでしょうか?

まず、
・ファイルを読み込むプログラム
・文字列を操作して期待する表現に変える
どちらができないのかはっきりさせましょう。
norinorimi
ベテラン
会議室デビュー日: 2005/07/28
投稿数: 51
投稿日時: 2005-08-08 17:34
インギさま
分かりづらくてすいませんでした。
ファイルを読み込むプログラム  です。

単にReadBufferなどで読み込み、三つのファイルにランダムに書き込むだけの課題です。
分かりづらくてすいませんでした。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-08-08 17:41
「ファイルを読み込んで文字列操作する」プログラムが最終的な成果物であることはわかります。
大抵の場合一つ大きな目的があるばあい、プログラムに落とし込むと復習の処理に分かれます。
今回 norinorimi さんが提示している課題もそうです。
具体的になにをしたいのかわかりませんが、大きく分けて先ほど挙げた2つの処理に分かれると感じました。
で、質問するときも処理単位にしないと焦点があいまいになって明確な回答をするのも難しくなります。
ファイルの読み込みを行うプログラムが書けるのであれば文字列操作についてだけ質問しましょう。
文字列操作についてわかっているのであればファイルI/Oについてだけ質問しましょう。
どちらもわからないのであれば2つのスレッドに分けて質問しましょう。
「ファイルを読み込んで文字列操作を行うAPI」みたいのはありませんから。

質問するにあたってどこで切り分けてよいかわからないのであれば現在の段階のコードイメージを貼り付けるのもありかもしれません。
norinorimi
ベテラン
会議室デビュー日: 2005/07/28
投稿数: 51
投稿日時: 2005-08-08 17:57
インギさま
何度もすいません。
<<途中のプログラム>>
public class T1 {
public static void main(String[] args) {
T1 t1 = new T1();
t1.inputoutput();
}
//データをランダムに入れたいファイル
public String Os1 = "C:/Documents and Settings/ Os1.txt";
public String Os2 = "C:/Documents and Settings/ Os2.txt";
public String Os3 = "C:/Documents and Settings/ Os3.txt";

public void inputoutput(){
try{
//Os.txtに元のデータ
BufferedReader br = new BufferedReader
(new FileReader("C:/Documents and Settings/             デスクトップ/Os/Os.txt "));
StringBuffer str = new StringBuffer();
int ln =0;
while(br.ready()){
                 //”<”を目印に前後の文章をとる
String line = br.readLine();
if(line.indexOf("<") != -1){
ln++;
}
else if(line.indexOf("<") && ln !=1)
}

}

}

}

まだ10分の1くらいです。
目的は、
・"<"に囲まれた部分をとってくる
です。

がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2005-08-08 17:58
がるです。
んっと…大学の課題ですかぁ。正直に言えばその辺は
「頑張って独力で」だと思うのですが。
# 九分九厘「必要な知識」は事前に教育されている
# でしょうし。

まぁ、乗りかかった船なのである程度。

引用:

実際には、
< ID=1 This is First
AAABBBCCCDDD
EEEFFFGGGHHH
< ID=2 this is Second
ABCDBDBATHEW
HTREWRHTWEQH
HTQWAHREWHHA
(以下省略)

ってな感じです。
ここから、
ID=1
AAABBBCCCDDD
EEEFFFGGGHHH
ID=2
ABCDBDBATHEW
HTREWRHTWEQH
HTQWAHREWHHA
(以下省略)
という風にするのが課題です。


ここから見える規則性をまず見抜く「目」が必要です。
上述の場合

・1文字目に<が来ている場合
 且つ
・'< 'に続いてID=となっている場合「数字を拾う」
 その数字はIDとみなし、空白を含む以降の文字は捨てる
・一文字目が<でない場合は「前出のIDの所持する文字列」として処理する
(一文字目が数字だったら とか 空白だったら とかは未考慮)

というロジックで「IDと英文をセットにして取得する」事は
可能かと思います。

で、「三つのファイル(たとえばT1,T2,T3)にランダムにID,英文の組で入れる」
が不明ではあるのですが(苦笑

プログラムはこうやって「明示的な文章に置き換えて」から
コーディングするとよいです。
つまりは「現在出されている仕様を明示的な文章に置き換える」
事が先決ですね。
まずはそのあたりをもう少し頑張ってみるとよいのではないでしょうか?
norinorimi
ベテラン
会議室デビュー日: 2005/07/28
投稿数: 51
投稿日時: 2005-08-08 18:12
がるがる様
わざわざありがとうございます。

<< 「三つのファイル(たとえばT1,T2,T3)にランダムにID,英文の組で入れる」
が不明ではあるのですが(苦笑

ID,英文を一つの組として、三つのファイルのいづれかに
書き込むって感じです。それをランダムにです。



スキルアップ/キャリアアップ(JOB@IT)