有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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);
        }

    }
}
}

共 (2) 个答案

  1. # 1 楼答案

    您已经在循环中声明并初始化了“questions”ArrayList。这将从头开始为循环的每个迭代重新创建ArrayList。然后,您将每次洗牌一个包含1个元素的列表。您应该将问题ArrayList定义移到循环之外

    另一个问题是问题与答案之间的联系。要做到这一点,最好创建一个名为QuestionAndAnswers的新类,其实例变量将包含一个问题和可能的答案。不要单独列出问题和答案,而是创建一个问题和答案的列表。在循环中填充该列表,然后洗牌,等等

  2. # 2 楼答案

    您正在创建一个名为answers的列表并将其洗牌,但您正在向名为vastused的列表添加答案

    对此进行更改:

    ArrayList<String> answers = new ArrayList<>();
    vastused.add(answer1);
    vastused.add(answer2);
    vastused.add(answer3);
    vastused.add(answer4);
    vastused.add(answer5);
    Collections.shuffle(answers);
    

    为此:

    List<String> answers = new ArrayList<>();
    answers.add(answer1);
    answers.add(answer2);
    answers.add(answer3);
    answers.add(answer4);
    answers.add(answer5);
    Collections.shuffle(answers);
    

    还请注意answers类型从ArrayList更改为List-请参见Liskov substitution principle