Ajuda - pergunta aleatoria aparece + de 1 vez

Oi Pessoal, Tenho esse método que me dá um número gerado aleatoriamente pra escolha da pergunta que será exibida em um quiz.
A idéia é “marcar” a pergunta q já foi exibida para que ela não seja exibida novamente. Por isso coloco essa pergunta dentro do vetor n0… mas parece que não está verificando se a pergunta já foi exibida ou não…
alguém pode me ajudar por favor?

Editando para explicar melhor…
questions é uma variável privada do tipo int inicializada como zero que conta quantas perguntas já foram exibidas. Ela é declarada na classe pública Question. Cada vez que uma pergunta é exibida essa variável é incrementada.

private int questions = 0;

/* retorna o numero aleatorio de pergunta */ private int getRandomQuestion() { /* obtem o numero randomico */ n0[questions]=rnd.nextInt(getMaxQuestions()); /* verifica se a pergunta já foi exibida */ for(int i=0;i<n0.length; i++){ if (n0[i] == n0[questions]){ getRandomQuestion(); break; } } return n0[questions]; }

BKling,

Fiz um código em 2 palitos aqui. Veja se te ajuda em alguma coisa.

public class Questao {
    private String questao;

    public Questao(String questao) {
        this.questao = questao;
    }

    public String getQuestao() {
        return this.questao;
    }

    public void setQuestao(String questao) {
        this.questao = questao;
    }
}

public class Questoes {
    private List<Questao> questoes;
    private List<Questao> questoesExibidas;
    private Random rnd;

    public Questoes() {
        this.questoes = new ArrayList<Questao>();
        this.questoesExibidas = new ArrayList<Questao>();
        this.rnd = new Random();
        loadQuestions();
    }

    private void loadQuestions() {
        Questao q1 = new Questao("Questão 01");
        Questao q2 = new Questao("Questão 02");
        Questao q3 = new Questao("Questão 03");
        Questao q4 = new Questao("Questão 04");
        Questao q5 = new Questao("Questão 05");
        Questao q6 = new Questao("Questão 06");
        Questao q7 = new Questao("Questão 07");
        Questao q8 = new Questao("Questão 08");
        Questao q9 = new Questao("Questão 09");
        Questao q10 = new Questao("Questão 10");
        Questao q11 = new Questao("Questão 11");
        Questao q12 = new Questao("Questão 12");
        Questao q13 = new Questao("Questão 13");
        Questao q14 = new Questao("Questão 14");
        Questao q15 = new Questao("Questão 15");
        Questao q16 = new Questao("Questão 16");
        Questao q17 = new Questao("Questão 17");
        Questao q18 = new Questao("Questão 18");
        Questao q19 = new Questao("Questão 19");
        Questao q20 = new Questao("Questão 20");
        questoes.add(q1);
        questoes.add(q2);
        questoes.add(q3);
        questoes.add(q4);
        questoes.add(q5);
        questoes.add(q6);
        questoes.add(q7);
        questoes.add(q8);
        questoes.add(q9);
        questoes.add(q10);
        questoes.add(q11);
        questoes.add(q12);
        questoes.add(q13);
        questoes.add(q14);
        questoes.add(q15);
        questoes.add(q16);
        questoes.add(q17);
        questoes.add(q18);
        questoes.add(q19);
        questoes.add(q20);
    }

    private void getRandomQuestion(Set<Integer> tentativas) {
        if(this.questoesExibidas.size() == this.getMaxQuestions()) {
            return;
        }
        int q = 0;
        do {
            q = rnd.nextInt(getMaxQuestions());
        } while(tentativas.contains(new Integer(q)));
        
        tentativas.add(q);
        Questao qt = this.questoes.get(q);
        boolean found = false;
        for(Questao qtex : this.questoesExibidas) {
            if(qt.equals(qtex)) {
                found = true;
                break;
            }
        }
        if(found == true) {
            getRandomQuestion(tentativas);
        } else {
             this.questoesExibidas.add(qt);
        }
    }

    public Questao getQuestaoAtual() {
        getRandomQuestion(new HashSet<Integer>());
        return this.questoesExibidas.get(this.questoesExibidas.size() - 1);
    }
    
    private int getMaxQuestions() {
        return this.questoes.size();
    }

    public List<Questao> getQuestoes() {
        return this.questoes;
    }

    public List<Questao> getQuestoesExibidas() {
        return this.questoesExibidas;
    }
    
    public static void main(String[] args) {
        Questoes qts = new Questoes();
        for(int i=0;i<10;i++) {
            System.out.println((i+1) + "a Tentativa: " + qts.getQuestaoAtual().getQuestao());
            if(qts.getQuestoesExibidas().size() == qts.getMaxQuestions()) {
                break;
            }
        }
    }
}

Testei aqui e funcionou, mas é aconselhável vc testar melhor… caso tenha interesse.

@braços,