0

ユーザーが 3 つの選択肢を持つシンプルな複数選択トリビア ゲームを Android で作成しています。正解の選択肢は DB から直接取得され、他の 2 つの間違った選択肢はメソッドを使用してランダムに選択されます。正解と 2 つの不正解を配列に入れ、配列をシャッフルします。ランダム選択方法で行から 1 列だけを取得している場合、ゲームは正常に動作します。ここで、ランダムな各行から 3 列を取得したいと思います。それで、私の問題は、「3つの列を持つ2つのランダムな行を取得し、結果の配列をシャッフルできる配列に入れる」というコードを書く方法です。ここに私の作業コードがあります:

    DBAdapter:
// ---Grabs 2 RANDOM ---
public String[] getRandomHA() {
    Cursor cursor = this.db.query(
            "hdtable Order BY RANDOM() LIMIT 2",
            new String[] { KEY_HA }, null, null, null, null, null);

    if (cursor != null) {
        int i = 0;
        String colStrings[] = new String[cursor.getCount()];
        while (cursor.moveToNext())
        {
            colStrings[i] = cursor.getString(0);
            i++;
            //cursor.close();
           }
        return colStrings;
        }
    return null;
    }

// --- END Grabs 2 RANDOM ---

Main Activity:
// --- Random 2 answers ----
public void getRandom() {
    dba.open();
    String[] wrong2 = dba.getRandomHA();
    dba.close();
}

shuffle an Array:
    // --- shuffle array ----       

    String[] numbArray = { rightAnswer[2], wrong2[0], wrong2[1] };
    List<String> aList = new ArrayList<String>();
    for (String s : numbArray)
        aList.add(s);
    Collections.shuffle(aList);
    TextView[] tVs = { optionA_TV, optionB_TV, optionC_TV };
    for (int i = 0; i < tVs.length; i++) {
        tVs[i].setText(aList.get(i));
    }
    // --- END shuffle array ----

では、これが DB Adapter メソッドの書き方ですか?

    // ---Grabs 2 RANDOM ---
public String[] getRandomHA() {
    Cursor cursor = this.db.query(
            "hdtable Order BY RANDOM() LIMIT 2",
            new String[] { KEY_Y, KEY_MD, KEY_HA }, null, null, null, null,         null);

    if (cursor != null) {
        int i = 0;
        String colStrings[] = new String[cursor.getCount()];
        while (cursor.moveToNext())
        {
            colStrings[i] = cursor.getString(0);
            colStrings[i] = cursor.getString(1);
            colStrings[i] = cursor.getString(2);
            i++;
            //cursor.close();
           }
        return colStrings;
        }
    return null;
    }

// --- END Grabs 2 RANDOM ---

上記の方法が正しい場合、ネストされた配列を反映するメイン アクティビティ メソッドをどのように記述すればよいでしょうか。

4

1 に答える 1

0

最初に頭に浮かぶのは、java.util.Randomクラスのインスタンスを使用しnextXXX()て、乱数を生成するメソッドの 1 つを呼び出すことです。その番号を使用してデータベースから行を選択し、ランダムな不正解として使用します。

于 2012-11-16T17:12:25.910 に答える