Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓:我如何在随机问答的问答游戏中获得正确的答案列表?_Android_String_Arraylist_Multiple Choice - Fatal编程技术网

Android 安卓:我如何在随机问答的问答游戏中获得正确的答案列表?

Android 安卓:我如何在随机问答的问答游戏中获得正确的答案列表?,android,string,arraylist,multiple-choice,Android,String,Arraylist,Multiple Choice,我正在制作一个简单的问答游戏。在这个游戏中,问题和相应的答案将随机生成。我创建了一个问题列表“q” 对于答案,我创建了各种列表,每个列表有4个字符串。例如,如果问题是q列表中的0,则此问题的答案将在列表“a0”中,对吗?但是我在获取答案列表中的字符串时遇到了一些问题。我试过这个: while(true){ Integer nxt = rng.nextInt(6); if (!generated.contains(nxt))

我正在制作一个简单的问答游戏。在这个游戏中,问题和相应的答案将随机生成。我创建了一个问题列表“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;
            }
    }
while(true){
整数nxt=rng.nextInt(6);
如果(!generated.contains(nxt))
{
生成.添加(nxt);
textView1.setText(((ArrayList)q.get(nxt));
字符串x;
x=(“a”+nxt);
集合。洗牌((x));
setText(((ArrayList)x.get(0));
setText(((ArrayList)x.get(1));
setText(((ArrayList)x.get(2));
setText(((ArrayList)x.get(3));
打破
}
}
我创建了一个字符串“x”来获得正确的列表。如果“nxt”为4,则按钮文本将获得列表a4中的字符串

但在我的代码中,“Collections.shuffle”和“setText”试图找到列表“x”。这不是我想象的那样

我怎样才能修好它

*我的想法是检查点击按钮的字符串,并与另一个正确答案列表进行比较。这样,我就可以把正确答案归因于其他三个错误。

我几天前做的

  • 计算正确答案
  • 将正确答案添加到您的答案列表中
  • 计算假答案,将其添加到答案列表中
  • 洗牌列表
  • 获取正确答案的
    id
    它在[0,最大答案]范围内
  • 如果选择了答案,则检查所选id(0、1、2、3)是否为正确答案。如果是,则用户选择了正确答案,否则他没有选择


    PS:抱歉自我升级。如果这个代码编译和/或正确运行,我会感到惊讶。你试图使用<代码>字符串< /C>作为变量名,将变量转换成<代码> ARARYLIST/<代码>,然后访问元素。这是错误的,在这么多层次上,你应该考虑做一些。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错误答案文本;
    }
    
    然后,您可以将问题存储在应用程序的
    ArrayList
    中,并按如下方式设置答案:

    //...
    // 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));
    
    /。。。
    //在此处设置ArrayList问题
    //...
    int nxt=rng.nextInt(6);
    //...    
    //确保列表的实际长度足以容纳生成的索引
    //...
    Question nextQuestion=questions.get(nxt);
    //...    
    //确保检索到的对象有效
    //...    
    //将问题文本设置为nextQuestion.questionText;
    //...
    ArrayList allAnswers=新的ArrayList();
    allAnswers.add(nextQuestion.correctAnswerText);
    allAnswers.addAll(下一个问题.错误答案文本);
    收藏。洗牌(allAnswers);
    btn1.setText(allAnswers.get(0));
    btn2.setText(allAnswers.get(1));
    btn3.setText(allAnswers.get(2));
    btn4.setText(allAnswers.get(3));
    
    首先,
    x
    不是一个列表,它是一个
    字符串
    。也许你的意思是
    q
    ;这在前面被用作列表?问题的随机答案?或者随机选择的问题,每个问题都有自己的非随机答案集?如果是随机答案,你如何确定他们中的任何一个确实回答了问题?提醒我答案也将以随机方式显示。这就是为什么我将集合放在按钮上。在将文本放到按钮上之前先洗牌。我的想法是生成这样的内容:1-生成一个随机数“nxt”;2-用这个数字“nxt”获取问题;3-操纵将“访问”的答案列表的名称。如果问题是“q”列表中的数字3,则访问的答案列表将是“a+nxt”,在这种情况下,nxt=3Ok。这似乎是一个有趣的应用程序。我的想法与你的类似,但我在访问答案列表时遇到了问题。我如何操作将要访问的列表的名称?这是我无法解决的问题fix@SirRoyce您不能在运行时操作变量名。至少我了解到了这一点。请进一步解释详细说明你的意思。谢谢你的提示,老兄!我是Java编程新手,我真的没有时间一步一步地学习教程,但我会努力做到这一点。我在应用程序中使用了你的提示,在看过一些教程并理解了一些概念后,现在应用程序运行良好。因此,谢谢。没问题,我很乐意提供帮助;-)