如何在java中读取文本文件的各个部分?

如何在java中读取文本文件的各个部分?,java,Java,我需要阅读文本文件的一部分,让用户回答,然后打印文本文件的下一部分。例如: Q1)1+1等于什么? (1) 2 (2) 3 (3) 1 (4) 5 Q2)2+3等于什么? (1) 5 (2) 4 (3) 7 (4) 9 Q3)2+8等于什么? (1) 10 (2) 7 (3) 11 (4) 十三, 我想展示第一个问题及其多项选择题答案——(“Q1)1+1等于什么?(1)2(2)3(3)1(4)5”), 然后接受用户的输入,然后显示文本文件中的第二个问题,依此类推 以下是我到目前为止的情况: fo

我需要阅读文本文件的一部分,让用户回答,然后打印文本文件的下一部分。例如:

Q1)1+1等于什么?
(1) 2
(2) 3
(3) 1
(4) 5
Q2)2+3等于什么?
(1) 5
(2) 4
(3) 7
(4) 9
Q3)2+8等于什么?
(1) 10
(2) 7
(3) 11
(4) 十三,

我想展示第一个问题及其多项选择题答案——(“Q1)1+1等于什么?(1)2(2)3(3)1(4)5”), 然后接受用户的输入,然后显示文本文件中的第二个问题,依此类推

以下是我到目前为止的情况:

for (int i = 0; i <= 3; i++)
{
    String lines = Files.readAllLines(Paths.get("History.txt")).get(i);
    System.out.println(lines);
    iUserInput = keyboard.nextInt();
    if (iUserInput == 1)
    {
        iScore = iScore + 1;
    }
}

for(int i=0;i假设您输入的每个问题都在自己的行中,每个答案都在自己的行中,每个问题都以“Q”开头,您可以这样做:

Scanner scanner = new Scanner(System.in);
List<String> lines;
try {
    lines = Files.readAllLines(Paths.get("History.txt"));

    int index = 0;
    while(index < lines.size()){
        do{
            System.out.println(lines.get(index));
            index++;
        }while(index < lines.size() && !lines.get(index).startsWith("Q"));

        System.out.println("What is your answer?");
        int answer = scanner.nextInt();
    }

} catch (IOException e) {
    // Problem reading the file, print the stack trace
    e.printStackTrace();
}

scanner.close();
因此,您可以向文件中添加一些附加数据,或者创建第二个包含答案的文件,用作“答案键”。然后,您可以使用“答案键”查看用户输入的答案是否正确,并采取适当的措施


注意:对于上面的代码,如果用户没有输入整数,将抛出
java.util.InputMismatchException
。因此,您应该以某种方式处理这种可能性-可能是告诉用户他们犯了错误,然后再试一次。您还需要验证用户输入,以确保用户在correc中输入值t范围,即从1到4,包括在内。

只读取一次所有行。然后逐个遍历所有行。您正在读取文件3次,这是不需要的。我现在看到您的编辑。为了让程序确定用户的答案是否正确,它需要知道正确的答案本身。您的程序如何计算出正确的答案一个问题的正确答案?非常感谢您的详细回答,但当我使用:List行时,它会出现以下错误:类型列表不是泛型的;它不能用参数参数化。您导入了列表接口吗?您使用的是什么版本的Java?还要确保您的导入是针对Java.util.ListI使用的是Java eclipse
if (iUserInput == 1)
{
    iScore = iScore + 1;
}