从csv文件中移动问题并将数字放在它们前面

时间:2015-12-21 17:11:32

标签: java

我在洗牌问题上遇到了问题,后来在他们面前放了数字。现在,下面的代码是从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 个答案:

答案 0 :(得分:1)

您已宣布并初始化了&#34;问题&#34;循环中的ArrayList。这会在循环的每次迭代中从头开始重新创建ArrayList。然后,您每次都会混洗一个包含1个元素的列表。您应该将问题ArrayList定义移到循环之外。

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

答案 1 :(得分:0)

您正在创建并随机播放名为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