J'ai une méthode qui doit comparer un entier avec un Arraylist et si le nombre sur l'entier est sur l'arraylist, je reçois un faux. Si le nombre entier n'est pas sur l'arraylist, je reçois un vrai. J'ai besoin de ça, parce que je fais un jeu questionnaire qui a quelques questions sur un BBDD et je ne peux pas montrer la même question deux fois. Aussi ces questions sont dans trois catégories: E, I et A. Je dois montrer cinq questions E, puis cinq questions I et ensuite cinq questions A.Comparer deux entiers ne fonctionne pas correctement dans Android
Donc je dois montrer des questions sans les répéter, et aussi 5 de chaque catégorie. Je fais ces méthodes mais je ne sais pas pourquoi cela répète quelques questions.
La seule chose qui fonctionne correctement est la catégorie questions. J'ai toujours 5 questions E, puis 5 questions et au moins 5 questions.
La méthode qui m'a dit que si les questions est sur le ArrayList:
private boolean checkRandom()
{
for(int i = 0; i < listRandom.size(); i++)
{
if(questionPosition == listRandom.get(i))
{
return false;
}
}
return true;
}
J'essaie aussi avec « égaux », mais je le même résultat.
La méthode qui vérifie si la question est dans la bonne catégorie et n'est pas montré avant:
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();
}
}
Alors, ce que j'ai est toutes les questions sur la bonne catégorie, mais répéter les questions et je Je ne sais pas pourquoi.
Quelqu'un peut-il m'aider?
Merci!
Vous avez vraiment besoin de déboguer ce code pour trouver l'erreur. –
Pour sélectionner des questions 'n' au hasard dans une' Liste' sans remplacement, utilisez 'Collections.shuffle' pour mélanger la liste, puis prenez-y les premiers éléments' n'. –
@DawoodibnKareem Que voulez-vous dire par get (iny) est différent de get (objet)? est-ce mon erreur? – Imrik