0

我正在制作一个应用程序,其中有问题列表和相应的答案。问题在一个字符串数组中,而答案在另一个字符串数组中。

我已经实施了以下内容,希望对问题进行洗牌。(当然答案需要与该问题相关联,否则毫无意义)

代码:

          selected_Q = new String[totalnoofQ];
          selected_A = new String[totalnoofQ];
          int[] random_code = new int[totalnoofQ];

          for (int i = 0; i < totalnoofQ; i++) 
          {                                               
              random_code[i] = i;
          }

          Collections.shuffle(Arrays.asList(random_code));
          for (int j = 0; j < totalnoofQ; j++) 
          {                                               
              int k = random_code[j];                        
              selected_Q [j] = databank_Q [k];
              selected_A[j] = databank_A [k];
          }

代码没有报告致命错误,但是 selected_Q 仍然是按顺序排列的。为什么?你能告诉我如何修改代码吗?谢谢!!!

4

1 回答 1

0

您将使用 random_code 创建的列表打乱,但 random_code 未修改。

您需要根据 random_code 创建一个临时列表。打乱这个列表,然后用它来填充 selected_X 数组。

像这样的东西应该工作:

    int[] random_code = new int[totalnoofQ];

    for (int i = 0 ; i < totalnoofQ ; i++) {
        random_code[i] = i;
    }


    List<Integer> random_code_list = new ArrayList<Integer>(); // Create an arraylist (arraylist is used here because it has indexes)
    for (int idx = 0 ; idx <  random_code.length ; idx++) {
        random_code_list.add(random_code[idx]); // Fill it
    }
    Collections.shuffle(random_code_list); // Shuffle it

    for (int j = 0 ; j < totalnoofQ ; j++) {
        int k = random_code_list.get(j); // Get the value
        selected_Q[j] = databank_Q[k];
        selected_A[j] = databank_A[k];
    }
于 2013-07-25T15:45:13.957 回答