Android 安卓:我如何在随机问答的问答游戏中获得正确的答案列表?
我正在制作一个简单的问答游戏。在这个游戏中,问题和相应的答案将随机生成。我创建了一个问题列表“q” 对于答案,我创建了各种列表,每个列表有4个字符串。例如,如果问题是q列表中的0,则此问题的答案将在列表“a0”中,对吗?但是我在获取答案列表中的字符串时遇到了一些问题。我试过这个: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))
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,最大答案]范围内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编程新手,我真的没有时间一步一步地学习教程,但我会努力做到这一点。我在应用程序中使用了你的提示,在看过一些教程并理解了一些概念后,现在应用程序运行良好。因此,谢谢。没问题,我很乐意提供帮助;-)