2015-12-21 44 views
1

我遇到了洗牌問題,後來把數字放在他們面前的問題。現在,下面的代碼從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); 
     } 

    } 
} 
} 
+0

它看起來像你試圖洗牌只有一個問題的列表。你能提供更多的代碼嗎?洗牌的答案是否奏效?你能舉一個你得到什麼樣的例子,你想要什麼? –

回答

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

還要注意從ArrayListListanswers類型的變化 - 看Liskov substitution principle

+0

我真的想添加我的整個代碼,但一切都以我的母語進行,並且很難理解 – Durgress

1

您已聲明並初始化「的問題「你的循環中的ArrayList。這將爲您的循環的每次迭代重新創建ArrayList。然後你將每次洗牌一個元素的列表。您應該將問題ArrayList定義移到循環之外。

另一個問題是問題與答案的關聯。要做到這一點,你最好創建一個名爲QuestionAndAnswers的新類,它的實例變量可以存在一個問題,這是可能的答案。而不是問題和答案的單獨列表,請創建QuestionAndAnswers的ArrayList。在循環中填充該列表,然後洗牌等。

相關問題