Android shuffle问题与解答(字符串数组)

时间:2013-07-25 15:09:49

标签: android shuffle arrays

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

我已经实现了以下内容,希望能够改变问题。 (当然答案需要与这个问题联系起来,否则无意义)

代码:

          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仍然按顺序排列。为什么? 你能否告诉我如何修改代码?感谢!!!

1 个答案:

答案 0 :(得分: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];
    }