2011-07-25 10 views
0

私は4つのオプション(a、b、c、d)を含むそれぞれと一緒に100の質問を含むデータ(4から5段落)を含むテキストファイルを持っています。その後、上記の質問に対する答えが含まれています(1.a、2.bなど)。私の問題は、毎回1つの質問とオプションを表示することです。ここでユーザーがオプションを選択すると、彼は正しいものを選ぶかどうかをチェックしたいと思う。同様に私はすべての質問のためにこれをしたいと思う。そして最後に、どれくらいの質問が正しいのか、どれくらいが間違っているのかを表示したい。いくつかの質問とオプションだけでなく情報も含まれているテキストファイルから1つの質問を読むには?

私の質問は、それぞれの質問とオプションを別々に入手する方法です。同様に答え。必要なときにテキストファイル内に情報を表示する方法

私のファイル

Section I – General Questions 



Instructions: choose the most correct answer. 

1. The International Labour Organization’s first Maternity Protection Convention was issued in: 

A.) 1952. 
B.) 2000. 
C.) 1919. 
D.) 1997. 

2. Beyond the 5th month of pregnancy, noise in excess of _______________________ may cause 
hearing loss in the fetus: 

A.) 90 dBA TWA per OSHA requirements 
B.) 155 dBC peak and 115 dBC TWA per ACGIH® TLV® Booklet notes 
C.) 75 dBA TWA per American Academy of Pediatrics guidelines 
D.) 65 dBC peak per EPA studies 


ANSWERS – Section I General Questions 

1. C 
2. B 
+0

ファイル全体をいくつかのデータ構造体(たとえばマップ)に読み込み、必要に応じて構造体を検索します。 – bezmax

答えて

1

私はあまりこの時点ではファイルの形式を心配しないでしょう。あなたのオブジェクトを設計します(おそらく質問、回答、学生などのようなもの)。そのすべてをいくつかのテストデータで処理してから、ファイルの解析を心配してください。あなたのプログラムオブジェクトは、ファイルがどのように見えるかを知る必要はありません。

+0

投稿したばかりのファイルを見ると、私の次の提案はその情報をデータベースに入れることです。もちろん、このようなファイルを解析することはできますが、最小限に抑えるためにはフレークになるでしょう。フォーマットのマイナーな変更やパーサの破損などです。これを何らかの種類のデータベースに入れる方がはるかに優れています。 – ashbyp

+0

早送りありがとう – kehnar

0

このテキストファイルでは、onw質問の終わりと次の質問の始まりを示すために何らかの種類の区切り文字を使用すると考えています。もしそうなら、私はお勧め:

  1. は、プログラムの先頭でテキストファイルを開きます。
  2. 最初の質問を表示する必要がある場合は、最初のデリミタ(1番目の質問の終わりと2番目の質問の先頭の間に表示される)まで読む。
  3. 次の質問を表示する必要があるときは、現在の位置(質問#1の最後)から開始し、次の区切り文字(質問#2の後に発生する)まで読む。

回答も同様に読むことができます。回答の開始を示す特別な区切り文字(XMLタグなど)がある場合は、その位置までスキップしてください。次に、エントリを1つずつ読み込み、解析します。

ご迷惑をおかけして申し訳ありません。あなたの要件やデリミタなどの詳細については、より詳細な回答をご提供できます。

0

正規表現を使用してください。

ファイルの形式がわかりません。どういうわけか質問が分かると簡単です。

  1. これは最初の質問 次のとおりです。たとえば、ファイルには、このような形式を持っている場合。 aaaaa b。 bbbbb c。 ccccc 1.b

  2. これは第2の質問 aです。 aaaaa b。 bbbbb c。 ccccc 2。C

あなたは、このように式を書くことができます: Pattern p = Pattern.compile("^\\d+\\.\\s+(.+?)(?:[abc]\\.\\s+(.+)){3}", Pattern.MULTILINE)

今だけのパターンを反復:それは明らかに動作しませんので、

Matcher m = p.matcher(text); 
while (m.find()) { 
    String questionNumber = m.group(1); 
    String questionText = m.group(2); 
    String answerA = m.group(3); 
    String answerB = m.group(4); 
    String answerC = m.group(5); 
    // your code 
} 

注意私はこのパターンをデバッグしていません。しかし、それはあなたに十分なヒントを与えると信じて、それは良いスタートです。

+0

早速replay.pleaseのおかげで、上の正規表現の説明を説明してくれてありがとう。私は()の意味を得ていない。 – kehnar

+0

私は今質問と回答の形式を上記の質問に含めました。ありがとう – kehnar

関連する問題