0

質問とそれぞれの回答のリストがあるアプリを作成しています。質問は 1 つの文字列配列にあり、回答は別の文字列配列にあります。

質問をシャッフルしたいので、以下を実装しました。(もちろん、答えはその質問にリンクする必要があります。そうしないと意味がありません)

コード:

          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 に答える