Создает дважды строковый элемент в arraylist - PullRequest
0 голосов
/ 13 сентября 2018

У меня проблема. в моем приложении викторины в Android Studio. Таким образом, когда вы начинаете тест, он должен задавать вопросы случайным образом, но иногда он появляется 1 вопрос дважды.

public void updateQuestion(){
    int numOfQuestion = 0;
    while(true){
        int nxt = rng.nextInt(qsts.size());
        if(numOfQuestion < 10){
            if(!generated.contains(nxt)){
                generated.add(nxt);
                nextQuestion = qsts.get(nxt);
                question_tv.setText(nextQuestion.questionText);
                allAnswers.add(nextQuestion.correctAnswerText);
                allAnswers.add(nextQuestion.wrongAnswer1);
                allAnswers.add(nextQuestion.wrongAnswer2);
                allAnswers.add(nextQuestion.wrongAnswer3);
                Collections.shuffle(allAnswers);
                button1.setText(allAnswers.get(0));
                button2.setText(allAnswers.get(1));
                button3.setText(allAnswers.get(2));
                button4.setText(allAnswers.get(3));
                numOfQuestion++;
            }
        }else{
            //GameOver();
        }
    }
}

так что мой класс:

public class QA {
    String questionText;
    String correctAnswerText;
    String wrongAnswer1;
    String wrongAnswer2;
    String wrongAnswer3;
    QA(String qst, String cAns, String wAns1, String wAns2, String wAns3){
        questionText = qst;
        correctAnswerText = cAns;
        wrongAnswer1 = wAns1;
        wrongAnswer2 = wAns2;
        wrongAnswer3 = wAns3;
    }
}

и формат объекта

QA q1 = new QA("Question", "CorrectAns", "WrongAns1", "WrongAns2", "WorngAns3");

Я пытался удалить элемент, который появляется,

qsts.remove(generated);

или *; 1013 *

qsts.remove(nxt);

Но приложение упало ... Также попытался создать пустой ArrayList и добавить элементы, которые показаны несколькими способами, но снова потерпели крах.

1 Ответ

0 голосов
/ 13 сентября 2018

Это действительно зависит от того, как реализована ваша коллекция generated. Я бы порекомендовал HashSet<Integer>.

Для эффективности кода измените условия - сначала проверьте наличие дубликатов, а затем количество вопросов.

...