1

我正在开发一个问题游戏的应用程序。我每次都设法将每个问题的答案显示到不同的按钮,但我无法检查正确的答案。我的方法是:我在数据库中创建了一个额外的列,我指出正确答案是(1、2、3 或 4)的列。我使用此代码在不同按钮中显示答案。

cur = dbHelper.getRandomQuestion();
    String corrans = cur.getString(cur.getColumnIndex("CorrectAnswer"));
    a = Integer.parseInt(corrans);
    String question = cur.getString(cur.getColumnIndex("QUESTIONS"));
    String answer0 = cur.getString(cur.getColumnIndex("ANSWER1"));
    String answer1 = cur.getString(cur.getColumnIndex("ANSWER2"));
    String answer2 = cur.getString(cur.getColumnIndex("ANSWER3"));
    String answer3 = cur.getString(cur.getColumnIndex("ANSWER4"));
    txtQuest.setText(question);

    ArrayList<String> lstAnswers = new ArrayList<String>();
    lstAnswers.add(answer0);
    lstAnswers.add(answer1);
    lstAnswers.add(answer2);
    lstAnswers.add(answer3);

     score.setText("Your score is " + b +","+ a);

    Random random = new Random();

    int[] textViews = new int[] { R.id.button1, R.id.button2, R.id.button3, R.id.button4 };
    int textViewIndex = 0;

    while (lstAnswers.size() > 0)   {
    int index = random.nextInt(lstAnswers.size());
    if(a == index){ b = index;}
    else{}
    String randomAnswer = lstAnswers.remove(index);
    ((TextView)findViewById(textViews[textViewIndex])).setText(randomAnswer);
    ++textViewIndex;
                                    }

对每个按钮调用以比较 a 和 b 的值,然后采取相应的行动。但它似乎不起作用。我明白为什么,但我无法弄清楚。有任何帮助。

4

3 回答 3

2

用于Collections.shuffle(list)打乱您的答案数组,然后显示答案将标签设置为“正确”到您的按钮,其中答案是正确的,然后比较标签值并显示正确或错误

编辑:下面的东西只是一个大纲

 Here im displaying answers in buttons....

    List<Integer> intList = new ArrayList<Integer>(Arrays.asList(0,1,2,3));
        Collections.shuffle(intList);

       Log.d("ERR","List after shuffling: " + intList);  
       // below answers will be assiagned randomly to buttons...
        btn_cmpTagline[intList.get(0)].setText(answr1);
        btn_cmpTagline[intList.get(0)].setTag("right");
        btn_cmpTagline[intList.get(1)].setText(answr2);
        btn_cmpTagline[intList.get(1)].setTag("wrong");
        btn_cmpTagline[intList.get(2)].setText(answr3);
        btn_cmpTagline[intList.get(2)].setTag("wrong");
        btn_cmpTagline[intList.get(3)].setText(answr4);
        btn_cmpTagline[intList.get(3)].setTag("wrong");

//点击时

   @Override
    public void onClick(View v) {
        switch(v.getId()){
        case R.id.btn_tag1:
            Log.d("ERR", v.getTag().toString());
            if(v.getTag().toString().equalsIgnoreCase("right")){
                //this button has right answer .. do anything 
            }

            break;
        case R.id.btn_tag2:
            Log.d("ERR", v.getTag().toString());
            if(v.getTag().toString().equalsIgnoreCase("right")){
                //this button has right answer .. do anything 
            }

            break;
        case R.id.btn_tag3:
            Log.d("ERR", v.getTag().toString());
            if(v.getTag().toString().equalsIgnoreCase("right")){
                //this button has right answer .. do anything 
            }

                    --
                    --
      }
于 2012-04-10T10:04:32.703 回答
0

当您从列表中删除项目时,正确答案的索引会发生变化,因此您必须更新正确答案的位置。

于 2012-04-10T09:52:45.003 回答
0

您可以获得正确答案的值而不是索引。然后,当您将答案添加到按钮时,您可以检查它是否与正确答案相同并保留新索引。

于 2012-04-10T11:15:02.753 回答