java从csv文件中拖拽问题并将数字放在前面
我有一个问题,就是把问题混在一起,然后把数字放在前面。现在,下面的代码从csv文件中获取问题和可能的答案。它洗牌的选择,后来纠正的答案和评分。该代码也会在用户需要时停止。(我删掉了代码,因为它不是必需的) 我试着把问题混在一起,但没有用(有一个明显的代码说明我在尝试),我也不知道如何给它们编号。欢迎任何意见
import java.io.BufferedReader;
import java.io.FileReader;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class misasiseeon {
@SuppressWarnings("rawtypes")
public static void main(String[] args) throws Exception {
int questionsCorrect = 0;
int questionsAnswered = 0;
boolean finish = false;
String splitBy = ",";
BufferedReader br = new BufferedReader(new FileReader("/FilePath"));
String line = br.readLine();
while ((line = br.readLine()) != null) {
String[] b = line.split(splitBy);
String question = (b[0]);
String answer1 = (b[1]);
String answer2 = (b[2]);
String answer3 = (b[3]);
String answer4 = (b[4]);
String answer5 = (b[5]);
String finish1 = (b[6]);
ArrayList<String> questions = new ArrayList<>();
questions.add(question);
Collections.shuffle(questions);
ArrayList<String> answers = new ArrayList<>();
vastused.add(answer1);
vastused.add(answer2);
vastused.add(answer3);
vastused.add(answer4);
vastused.add(answer5);
Collections.shuffle(answers);
System.out.println(questions);
System.out.println(answers);
}
}
}
}
# 1 楼答案
您已经在循环中声明并初始化了“questions”ArrayList。这将从头开始为循环的每个迭代重新创建ArrayList。然后,您将每次洗牌一个包含1个元素的列表。您应该将问题ArrayList定义移到循环之外
另一个问题是问题与答案之间的联系。要做到这一点,最好创建一个名为QuestionAndAnswers的新类,其实例变量将包含一个问题和可能的答案。不要单独列出问题和答案,而是创建一个问题和答案的列表。在循环中填充该列表,然后洗牌,等等
# 2 楼答案
您正在创建一个名为
answers
的列表并将其洗牌,但您正在向名为vastused
的列表添加答案对此进行更改:
为此:
还请注意
answers
类型从ArrayList
更改为List
-请参见Liskov substitution principle