0

簡単なクイズゲームを作っています。このゲームでは、質問とそれぞれの回答がランダムに生成されます。質問のリスト「q」を作成しました。

そして、その答えとして、それぞれ4つの文字列を含むさまざまなリストを作成しました。たとえば、質問がqリストの0の場合、この質問の回答はリスト「a0」になりますよね?しかし、回答リストの文字列を取得するのに問題があります。私はこれを試しました:

    while(true){

            Integer nxt = rng.nextInt(6);

            if (!generated.contains(nxt))
            {
                generated.add(nxt);

                textView1.setText(((ArrayList<String>) q).get(nxt));

                String x;
                x = ("a" +nxt); 

                Collections.shuffle((x));

                btn1.setText(((ArrayList<String>) x).get(0));
                btn2.setText(((ArrayList<String>) x).get(1));
                btn3.setText(((ArrayList<String>) x).get(2));
                btn4.setText(((ArrayList<String>) x).get(3));


                break;
            }
    }

正しいリストを取得するために文字列「x」を作成しました。「nxt」が4の場合、ボタンのテキストはリストa4の文字列を取得します。

しかし、私のコードでは、「Collections.shuffle」「setText」はリスト「x」を見つけようとします。それは私が想像したようには進んでいません。

どうすれば修正できますか?

*私の考えは、クリックされたボタンの文字列をチェックして、正しい答えの別のリストと比較することです。そのようにして、私は正しい答えと他の3つの間違った答えを帰することができます。

4

2 に答える 2

1

数日前に同様のクイズアプリ(King of Math)を作成しました。

  1. 正解を計算する
  2. 回答リストに正しい回答を追加してください
  3. 偽の回答を計算し、回答リストに追加します
  4. リストをシャッフルする
  5. id正解を取得します。[0、max_answers)の範囲にあります

回答が選択されている場合は、選択したID(0、1、2、3)が正解の1つであるかどうかを確認します。そうである場合、ユーザーは正しいものを選択しました。そうでない場合、ユーザーは選択しませんでした。

PS:自己宣伝してすみません。

于 2013-03-04T15:37:01.277 に答える
0

このコードが正しくコンパイルおよび/または実行されるとしたら、私は驚きます。aのコンテンツをString変数名として使用し、その変数をanにキャストしてからArrayList<String>、要素にアクセスしようとしています。これは非常に多くのレベルで間違っているため、いくつかのJavaチュートリアルを再度実行することを検討する必要があります。

とにかく続行できると感じた場合は、次のアプローチを試してください。質問と回答を別のリストに保存するのではなく、クラスにまとめて保存する必要があります。

class Question
{
    //...
    // maybe id and other stuff belonging to a question
    //...

    String questionText;

    // separate because you need to tell the correct answer apart from the wrong ones later
    // you could also just always use the first one in a set of answers.
    String correctAnswerText; 
    ArrayList<String> wrongAnswerTexts;
 }

ArrayList<Question>次に、質問をアプリのに保存し、次のように回答を設定できます。

//...
// set up ArrayList<Question> questions here
//...

int nxt = rng.nextInt(6);

//...    
// make sure your list is actually long enough for the generated index
//...

Question nextQuestion = questions.get(nxt);

//...    
// make sure the retrieved object is valid
//...    
// set the question text to nextQuestion.questionText;
//...

ArrayList<String> allAnswers = new ArrayList<String>();
allAnswers.add(nextQuestion.correctAnswerText);
allAnswers.addAll(nextQuestion.wrongAnswerTexts);

Collections.shuffle(allAnswers);

btn1.setText(allAnswers.get(0));
btn2.setText(allAnswers.get(1));
btn3.setText(allAnswers.get(2));
btn4.setText(allAnswers.get(3));
于 2013-03-04T15:59:53.247 に答える