我需要阅读包含未知数量问题的文本文件。格式始终相同,但选项的数量不同。我用for循环来处理这个问题。
如果我删除do while,代码会成功提取其中一个问题并存储它,但我需要它循环。代码甚至不能用循环编译。我尝试了很多修复,但它只是不会编译。
非常感谢任何建议!
git merge-base A B C
答案 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
}
}
}