2011-07-25 29 views
0

我有一個文本文件,其中包含數據(4至5段),然後包含100個問題,每個包含四個選項(a,b,c,d)。之後它包含上述問題的答案(1.a,2.b等)。我的問題是我想每次閱讀單個問題和選項來顯示。這裏當用戶選擇選項時,我想檢查他是否選擇正確的選項。同樣,我想對所有問題都這樣做。最後,我想顯示有多少問題是正確的,有多少是錯誤的。如何從包含幾個問題和選項以及信息的文本文件中讀取單個問題?

我的問題是,我怎樣才能分別得到每個問題和選項?同樣的答案。如何在需要時單獨獲取文本文件中的信息?

我的文件

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. 當您需要顯示第一個問題時,請閱讀第一個分隔符(第一個問題結束與第二個問題開始之間的分隔符)。
  3. 當您必須顯示下一個問題時,從您當前的位置開始(在問題#1結束時),並閱讀,直到下一個分隔符(將在問題#2之後出現)。

答案也可以類似地閱讀。如果你有一個特殊的分隔符(比如說一個XML標籤),表示答案的開頭,那麼直接跳到那個位置。然後開始逐個閱讀條目並解析它們。

對不起,有些模糊的答案:)如果您可以更具體地瞭解您的要求和分隔符等,我們可以提供更詳細的答案。

0

使用正則表達式。

我不知道文件的確切格式。如果問題能以某種方式被識別,我會更容易。例如,如果文件中有這樣的格式:

  1. 這是第一個問題 一個。 aaaaa b。 bbbbb c。 ccccc 1.b

  2. 這是第二個問題 a。 aaaaa b。 bbbbb c。 ccccc 2。ç

你可以寫這樣的表達: 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

感謝您的快速回放。請解釋上面提到的正則表達式。我沒有得到()的含義。 – kehnar

+0

我現在在上面的問題中也包含了問題和答案的格式謝謝 – kehnar