【发布时间】:2017-12-09 00:56:20
【问题描述】:
我有一个方法必须将整数与 Arraylist 进行比较,如果整数上的数字在 arraylist 上,我会收到错误的结果。如果整数不在数组列表中,我会收到一个 true。
我需要这个,因为我正在制作一个问答游戏,其中包含一些关于 BBDD 的问题,但我不能两次显示相同的问题。此外,这些问题分为三类:E、I 和 A。我必须展示五个 E 问题,然后是五个 I 问题,然后是五个 A 问题。
所以我必须展示问题而不重复,每个类别也有 5 个。我做了这个方法,但我不知道为什么它会重复一些问题。
唯一能正常工作的是类别问题。我总是有 5 个 E 问题,然后是 5 个 I 问题和至少 5 个 A 问题。
告诉我问题是否在 ArrayList 上的方法:
private boolean checkRandom()
{
for(int i = 0; i < listRandom.size(); i++)
{
if(questionPosition == listRandom.get(i))
{
return false;
}
}
return true;
}
我也尝试使用“等于”,但结果相同。
检查问题是否属于正确类别且之前未显示的方法:
private void loadPhase() {
if (numQuestion < 15)
{
r = new Random();
questionPosition = r.nextInt(listQuestions.size());
if(numQuestion < 5)
{
while(!listPhase.get(questionPosition).equals("E") && (!listPhase.get(questionPosition).equals("E")|| !checkRandom()))
{
r = new Random();
questionPosition = r.nextInt(listQuestions.size());
}
}
else if(numQuestion > 4 && numQuestion < 10)
{
while(!listPhase.get(questionPosition).equals("I") && (!listPhase.get(questionPosition).equals("I")|| !checkRandom()))
{
r = new Random();
questionPosition = r.nextInt(listQuestions.size());
}
}
else if(numQuestion > 9)
{
while(!listPhase.get(questionPosition).equals("A") && (!listPhase.get(questionPosition).equals("A")|| !checkRandom()))
{
r = new Random();
questionPosition = r.nextInt(listQuestions.size());
}
}
listRandom.add(questionPosition);
header4questions.setText(listQuestions.get(questionPosition));
answer1.setText(listAnswers.get(questionPosition * 4));
answer2.setText(listAnswers.get((questionPosition * 4) + 1));
answer3.setText(listAnswers.get((questionPosition * 4) + 2));
answer4.setText(listAnswers.get((questionPosition * 4) + 3));
numQuestion++;
}
else {
Toast.makeText(getApplicationContext(), "You have finished the quiz!", Toast.LENGTH_SHORT).show();
uploadPoints();
}
}
所以,我所拥有的是关于正确类别的所有问题,但它重复了这些问题,我不知道为什么。
谁能帮帮我?
谢谢!
【问题讨论】:
-
你确实需要调试这段代码才能找出错误。
-
要从
List中随机选择n问题而不替换,请使用Collections.shuffle随机排列列表,然后从中取出第一个n项目。 -
@DawoodibnKareem get(iny) 与 get(object) 不同是什么意思?这是我的错误吗?
-
不,我完全错了,所以我没有回答这个问题。我将不得不更仔细地研究你的问题。
-
好的,我等@DawoodibnKareem 非常感谢!
标签: java android arraylist compare