Eu estou criando um algoritmo Java que faça perguntas aletoriamente, e depois fazer uma comparação entre as perguntas e se tiver alguma pergunta igual terá que fazer Math.random novamente.
Eu fiz até a parte do random, daí pra frente eu não sei como fazer !
Eu armazenaria todas as perguntas que foram selecionadas em um vetor. E chamaria o metodo random e verificaria nesse vetor se a pergunta ja foi selecionado senaooo … jogo a pergunta na tela … a ideia é por aiii…
abs
luciano.eti
tbm acho que isso vai depender da quantidade de perguntas armazenadas…talvez não seria interessante um ‘txt’
e tbm acesso aleatório para buscar as string’s…
[]'s
Luciano
LPJava
se for muitas perguntas vc pode criar um BD de perguntas e ja com um campo da resposta correta e com um numero de identificacao, quando gerar o numero randomico vc vai la no BD busca a pergunta que ja vem com a resposta e compar com a qual foi escolhida pelo usuario. Vai poupar bastante codigo e manutencao fica melhor.
Lavieri
Uma abordagem que não tem repetições
classTeste{/** * Um pequeno teste, criando um objeto, adcionando algumas perguntas, e * depois sorteando as perguntas. * @param args */publicstaticvoidmain(String[]args){PerguntasRandomicasperguntas=newPerguntasRandomicas().addPergunta("Pergunta A").addPergunta("Pergunta B").addPergunta("Pergunta C").addPergunta("Pergunta D").addPergunta("Pergunta E");while(perguntas.hasMaisPerguntas()){System.out.println(perguntas.proximaPergunta());}}}
importjava.util.ArrayList;importjava.util.Collections;importjava.util.List;importjava.util.NoSuchElementException;importjava.util.Random;/** * * @author Tomaz Lavieri */publicclassPerguntasRandomicas{privateList<String>perguntasAFazer=newArrayList<String>();privateList<String>perguntasFeitas=newArrayList<String>();privateRandomroleta=newRandom();/** * Adciona uma pergunta a lista de perguntas a serem feitas, e retorna * o proprio objeto. * @param pergunta A pergunta a ser adcionada. * @return Este proprio objeto PerguntasRandomicas */publicPerguntasRandomicasaddPergunta(Stringpergunta){perguntasAFazer.add(pergunta);returnthis;}/** * Informa se ainda há perguntas a serem feitas. * @return <tt>true</tt> caso ainda haja perguntas<br> * <tt>false</tt> caso contrario. */publicbooleanhasMaisPerguntas(){returnperguntasAFazer.size()>0;}/** * A quantidade de perguntas que ainda faltam ser feita. * @return quantidade de perguntas que ainda faltam ser feita. */publicintgetQuantidadeDePerguntasRestantes(){returnperguntasAFazer.size();}/** * A quantidade de perguntas que já foram feitas. * @return quantidade de perguntas que já foram feitas. */publicintgetQuantidadeDePerguntasFeitas(){returnperguntasFeitas.size();}/** * Quantidade total de perguntas deste objeto, incluindo as já feitas, e as * que ainda serão feitas. * @return */publicintsize(){returnperguntasAFazer.size()+perguntasFeitas.size();}/** * Sorteia e retorna a proxima pergunta. * @return a proxima pergunta * @throws NoSuchElementException quando não existe uma proxima pergunta. */publicStringproximaPergunta(){if(!hasMaisPerguntas())thrownewNoSuchElementException();intsorteada=roleta.nextInt(getQuantidadeDePerguntasRestantes());StringproximaPergunta=perguntasAFazer.remove(sorteada);perguntasFeitas.add(proximaPergunta);returnproximaPergunta;}/** * A lista (somente leitura) de perguntas que já foram feitas, na exata * ordem em que as perguntas foram sorteadas. * @return a lista de perguntas feitas. */publicList<String>getPerguntasFeitas(){returnCollections.unmodifiableList(perguntasFeitas);}/** * A lista (somente leitura) de perguntas que ainda serão feitas.<br> * A ordem desta lista é dada pela inserção das perguntas e não é a mesma * ordem em que as perguntas serão realizadas. * @return a lista de perguntas a serem feitas. */publicList<String>getPerguntasAFazer(){returnCollections.unmodifiableList(perguntasAFazer);}}