do while循环文本文件无法正常工作

时间:2015-11-01 16:58:38

标签: java file do-while

我需要阅读包含未知数量问题的文本文件。格式始终相同,但选项的数量不同。我用for循环来处理这个问题。

如果我删除do while,代码会成功提取其中一个问题并存储它,但我需要它循环。代码甚至不能用循环编译。我尝试了很多修复,但它只是不会编译。

非常感谢任何建议!

git merge-base A B C

2 个答案:

答案 0 :(得分:0)

我建议你制作while loop而不是do ... while。那么你不应该在循环中进行多次readLine调用。首先,我会这样做。我知道这不是最终的,因为我不知道你的文件是什么样的。

String line = null;  
while ((line = bufferedReader.readLine()) != null) {
       String question = line;
       int numoptions = Integer.parseInt(line);

       ArrayList<String> options = new ArrayList<>();
       for (int i = 0; i < numoptions; i++) {
            String choice = line;
            options.add(choice);
       }

       int answer = Integer.parseInt(line);
       int tries = Integer.parseInt(line);
       int wins = Integer.parseInt(line);           

       Question objQ = new Question(question, numoptions, options,  answer, tries, wins); 
       mainlist.add(objQ);
}
bufferedReader.close();
看完文件后,我可能会这样做。我想你现在可以自己完成它:

int i = 0;
while ((line = bufferedReader.readLine()) != null) {
    i++;
    switch(i)
    {
       case 1: String question = line;
        break;

       case 2:
        int numoptions = Integer.parseInt(line);
        ArrayList<String> options = new ArrayList<>();
        for (int i = 0; i < numoptions; i++) {
                String choice = line;
                options.add(choice);
        }
        break;

答案 1 :(得分:0)

在while语句中,执行bufferedReader.readLine(),不使用该结果。这可能不是你想要做的。

请查看下面的代码,该代码应该编译并阅读您的问题文本文件(假设这是每行一个整数)。

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;


public class ReadQuestions {

    static ArrayList<Question> mainlist = new ArrayList<>();


    static void readFile(File f) throws IOException {
        FileReader fileReader = new FileReader(f);

        BufferedReader bufferedReader =
                new BufferedReader(fileReader);

        String line;


        while(true) {

            line = bufferedReader.readLine();
            if(line == null)
                break;
            System.out.println(line);
            String question = line;

            line = bufferedReader.readLine();
            int numoptions = Integer.parseInt(line);

            ArrayList<String> options = new ArrayList<>();
            for (int i = 0; i < numoptions; i++) {
                line = bufferedReader.readLine();
                String choice = line;
                options.add(choice);
            }

            line = bufferedReader.readLine();
            int answer = Integer.parseInt(line);

            line = bufferedReader.readLine();
            int tries = Integer.parseInt(line);

            line = bufferedReader.readLine();
            int wins = Integer.parseInt(line);


            Question objQ = new Question(question, numoptions, options,            answer, tries, wins);
            mainlist.add(objQ);
        }
        bufferedReader.close();
    }

    public static void main(String []arg) throws IOException {
        File f = new File("questions.txt");
        readFile(f);
    }


    public static class Question {
        public Question(String question, int numoptions, ArrayList<String> options, int answer, int tries, int wins) {
            // tbc
        }
    }


}