Java 如何从包含多个问题和选项以及信息的文本文件中读取单个问题?

Java 如何从包含多个问题和选项以及信息的文本文件中读取单个问题?,java,android,Java,Android,我有一个文本文件,其中包含数据(4到5段),然后包含100个问题,每个问题包含四个选项(a、b、c、d)。随后,它包含了上述问题的答案(1.a、2.b等等)。我的问题是,我想每次阅读一个问题和选项来显示。在这里,当用户选择选项时,我想检查他是否选择了正确的选项。同样,我想对所有问题都这样做。最后我想展示有多少问题是正确的,有多少是错误的 我的问题是,如何分别获得每个问题和选项?答案也是如此。如何在需要时获取文本文件中单独显示的信息 我的档案 Section I – General Questio

我有一个文本文件,其中包含数据(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 

此时,我不会太担心文件的格式。设计你的目标(大概是问题、答案、学生等等)。所有这些都需要处理一些测试数据,然后再考虑解析文件。您的程序对象不需要知道文件的外观。

我想这个文本文件使用某种分隔符来指示onw问题的结束和下一个问题的开始。如果是,我建议:

  • 打开程序开头的文本文件
  • 当您需要显示第一个问题时,请一直读到第一个分隔符(出现在第一个问题结束和第二个问题开始之间的分隔符)
  • 当你必须显示下一个问题时,从你当前的位置开始(在问题1的末尾),一直读到下一个分隔符(出现在问题2之后)
  • 答案也可以类似地阅读。如果您有一个特殊的分隔符(比如,一个XML标记)指示答案的开始,请跳到该位置。然后开始逐个读取条目,并对其进行解析


    很抱歉回答有点模糊:)如果您能更具体地说明您的要求和分隔符等,我们可以提供更详细的答案。

    使用正则表达式

    我不知道你的文件的确切格式。如果这个问题能被识别,我会更容易回答。例如,如果文件的格式如下:

  • 这是第一个问题 A.AAAA Bbbbbb Cccccc 1.b

  • 这是第二个问题 A.AAAA Bbbbbb Cccccc 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
    }
    

    注意,我还没有调试这个模式,所以它显然不起作用。但我相信它给了你足够的提示,所以这是一个好的开始

    将整个文件读取到某个数据结构(例如地图),然后在需要时搜索该结构。查看刚才发布的文件,我的下一个建议是将该信息放入数据库。当然,您可以像这样解析文件,但至少可以这么说——对格式进行一个小小的更改,您的解析器就会崩溃。更好的方法是将其放入某种数据库中。感谢快速重播。请解释上面提到的正则表达式。我不理解()的含义。我现在还将问答格式包含在上面的问题中。谢谢