Olá pessoal! to com um pequeno probleminha aki q se fosse na vida real daria uma boa dor de cabeça... rsrs
Fiz um programa simulando a mega sena... mas ele ta repetindo os numeros, já caçei várias formas p evitar isso, mas nao to conseguindo... o que fazer p ele não repetir mais? segue o código:
importjavax.swing.JOptionPane;publicclassMain{/***@paramargsthecommandlinearguments*/publicstaticvoidmain(String[]args){sena1rodar=newsena1();intpergunta=JOptionPane.showConfirmDialog(null,"Deseja realizar sorteio?");if(pergunta!=0)JOptionPane.showMessageDialog(null,"Obrigado!");elseif(pergunta==0){{do{for(inti=0;i<6;i++){rodar.definirnumeros();rodar.guardanumero();}JOptionPane.showMessageDialog(null,"Os números sorteados são: "+rodar.guarda);rodar.guarda="";pergunta=JOptionPane.showConfirmDialog(null,"Deseja realizar novo sorteio?");if(pergunta!=0){JOptionPane.showMessageDialog(null,"Obrigado!");}}while(pergunta==0);}}}}
Olá pessoal! to com um pequeno probleminha aki q se fosse na vida real daria uma boa dor de cabeça… rsrs
Fiz um programa simulando a mega sena… mas ele ta repetindo os numeros, já caçei várias formas p evitar isso, mas nao to conseguindo… o que fazer p ele não repetir mais? segue o código:
Guarde o resultado a cada sorteio. No próximo sorteio, compare o resultado com todos que estejam guardados. Caso você encontrar algum que já tirou antes, sorteie novamente até tirar um inédito. Repita ad nauseum.
tubiluki
vc teria que armazenar cada numero no array e depois comparar o numero sorteado com os anteriores pra ver se eram todos diferentes… e se for igual a algum numero anterior sortear de novo e armazenar no array.
vc tem um array mas so utiliza a primeira posicao dele sempre. dai nem precisaria do array.
e o if(pergunta != 0) … else if (pergunta == 0)
o segundo if se torna desnecessario, pois se pergunta for != 0 entao com certeza vai ser ==0
sgtbreitner
Então, a documentação do link eu já havia lido ela, ela é uma boa introdução aos números aleatórios, mas mesmo assim eu não consigo implementar o meu código… quando meu código gera os 6 números, do jeito que ele está, o código da margem para repetição entre os 6 números, p. ex: 0, 2, 2, 4, 10, 30 eu não to conseguindo fazer essa comparação acima… to tentando aqui mas não está dando certo… alguma dica?
tubiluki
cara,
as dicas ja foram dadas acima…
Lucas_Cavalcanti
Não usa o Math.random()…
Usa o new Random().nextInt(60) + 1… ele vai fazer o que vc quer…
mas ainda assim está saindo números repetidos, devo estar comparando de forma errada…??
tubiluki
sim…
vc deveria estar armazenando os numeros no array…
e a cada novo numero … comparando com os anteriores…
mas vc nao armazena nada… so o anterior…
dai nao tem como funcionar o que vc quer.
sgtbreitner
cara, não é má vontade minha, to tentando fazer isso que você falou, mas não to conseguindo, você sabe onde eu posso encontrar algo para pesquisar e resolver esse problema?
sgtbreitner
ou se tiver algum exemplo também ajuda!
robcoutinho
cara uma pergunta. . esse exercicio é pra aula de MAC ?
B
Bruno_Laturner
Você sabe armazenar valores em um array (ou numa List ou qqr outra coleção) e obter todos os valores do array de voltar para compará-lo com o número que você tem na mão?
sgtbreitner
sim, mas não deixa de ser uma duvida… você conseguiu?
sgtbreitner
Bruno
Não sei como fazer isso!
sgtbreitner
sim, você conseguiu?
sgtbreitner
Você sabe armazenar valores em um array (ou numa List ou qqr outra coleção) e obter todos os valores do array de voltar para compará-lo com o número que você tem na mão?
não, to pegando Java agora…
robcoutinho
sim, você conseguiu?
consegui cara . me manda por mp com seu msn ae eu tento te ajuda
abraco
maquiavelbona
Se você quer garantir que não haja números iguais sorteados, você pode usar Set e ir sorteando até o tamanho do set ser 6.
Assim voce pode sortear um numero verificar se ja contem se nao tiver voce adiciona se tiver voce sorteia denovo até conseguir apenas numeros validos.
gpd38
Fiz a algum tempo este programa, talves ajude
//Programa testeimportjavax.swing.JOptionPane;publicclassTeste{publicstaticvoidmain(String[]args)throwsException{MegaSenaf;System.out.println("MEGA SENA");intquantidade=Integer.parseInt(JOptionPane.showInputDialog("Escolha a quantidade de jogos a serem gerados"));f=newMegaSena();f.GeraValores(quantidade);f.MostrarValoresGerados();}}
importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.FileReader;importjava.io.FileWriter;importjava.util.ArrayList;importjava.util.List;importjavax.swing.JOptionPane;publicclassMegaSena{List<Integer>lista=newArrayList<Integer>();BufferedWritermega;MegaSena()throwsException{Stringnome=JOptionPane.showInputDialog("Digite o nome do arquivo de gravação.\nExemplo: loto.txt");mega=newBufferedWriter(newFileWriter(nome));}publicvoidGeraValores(intquantidade)throwsException{for(inti=0;i<quantidade;i++){mega.write("JOGO "+(i+1)+" =");for(intj=0;j<6;j++){intr=(int)(1+(Math.random()*60));while(lista.contains(r))r=(int)(1+(Math.random()*60));lista.add(r);mega.write(" "+r);}lista.removeAll(lista);mega.write("\n");}mega.close();JOptionPane.showMessageDialog(null," Jogos gravados com sucesso! ");}publicvoidMostrarValoresGerados()throwsException{Stringnome=JOptionPane.showInputDialog("Digite o nome do arquivo onde foram gravados os jogos feitos.\nExemplo: mega.txt");BufferedReaderarquivo=newBufferedReader(newFileReader(nome));Stringlinha=arquivo.readLine();while(linha!=null){System.out.println(linha);linha=arquivo.readLine();}arquivo.close();}}
P
Popeye12345
Velho, nem testei. Foi aqui no coder do GUJ mesmo.
Vê se é assim:
importjava.util.Random;publicclassLels{publicstaticvoidmain(String[]args){//Aqui será colocado os numeros randômicos.inttemporario=0;int[]sorteados=newint[6];Randomr=newRandom();for(inti=0;i<sorteados.length;i++){temporario=r.nextInt(60);for(intj=0;j<sorteados.length;j++){System.out.println("Verificando iguais...");if(sorteados[j]==temporario){System.out.println("Escolhendo outro elemento...");temporario=r.nextInt(60);}}sorteados[i]=temporario;System.out.println("Sorteado: "+sorteados[i]);}for(intk=0;k<sorteados.length;k++){System.out.println("Sorteado final: "+sorteados[k]);}}}
Vê se compila ai.
Valeu.
sgtbreitner
Ok pessoal, vou usar os exemplos fornecidos para resolver o exercício aqui. Se ainda der errado eu tenho uma forca aqui comigo… Agradeços a todos do tópico!!
G
guilherme_marques
Opa, e8 acabei de fazer esse mesmo exercicio na faculdade …
eu fiz um while que induz a fazer o for do vetor até que todos os espaços do vetor estejam diferentes…
while(v[0]==v[1]||v[0]==v[2]…v[4]==v[5]
sgtbreitner
cara, testei seu codigo e eles saem repetidos, basta colocar em vez de 60, colocar 10 que ele mostra os numeros repetidos…
G
guilherme_marques
ae eu acabei de testar e tah funcionando sim, se vc colocar um while para quando ele der os valores não tem como ele fugir …
ele tem de fazer todos os numeros iguais para sair da repetição
sgtbreitner
guilherme marques:
ae eu acabei de testar e tah funcionando sim, se vc colocar um while para quando ele der os valores não tem como ele fugir …
ele tem de fazer todos os numeros iguais para sair da repetição
entendi, mas se fosse um vetor de 1000 posições estria perdido fazendo desta forma…
Com isso você vai ter um Set com 6 objetos sorteados e todos serão diferentes.
Até!
P
Popeye12345
Verdade. Testei aqui, ele só pula uma vez e por isso que acontece isso.
Deixa eu ajeitar…
sgtbreitner
cara, testei seu codigo e eles saem repetidos, basta colocar em vez de 60, colocar 10 que ele mostra os numeros repetidos…
Han? Mostra o teu codigo ai. Não faz sentido isso, ao menos na lógica, ele não mostraria mesmo.
eu soh mudei essa parte do codigo:
temporario=r.nextInt(60);
em vez de 60 coloquei 10, dai ele repetia alguns numeros…
P
Popeye12345
Velho ,se vc btivesse 1000 posições em um array para checar, você só poderia fazer isso de dois jeitos: Ou criando uma espécie de índice para analisar ou um controle mais inteligente (o meu eu perco processamento, pq eu nao estou pesquisando nas posições que se abrem, estou pesquisando em todas mesmo quando só tem um elemento no array. Vou ajeitar isso.
deu certo cara!! deu certo!!! 3 urras p vc!!
urra!! urra!! urra!!!
sgtbreitner
Bom pessoal, agradeço a todos por postarem aqui, sei que tenho muita coisa para ver e aprender, com certeza este site esta fazendo a diferença no meu estudo em JAVA. Quando minha bagagem cultural sobre JAVA for maior, também com certeza irei ajudar e repassar o conhecimento!
Mais uma vez obrigado!
B
Bruno_Laturner
publicclassMegaSena{publicstaticvoidmain(String[]args){Sorteiosorteio=newSorteio(60);for(inti=0;i<6;i++)sorteio.sortear();System.out.println(sorteio.quantidadeSorteada()+" números foram sorteados: "+sorteio.getSorteados());}}
importjava.util.Collections;importjava.util.Random;importjava.util.SortedSet;importjava.util.TreeSet;publicclassSorteio{privatefinalintMAXIMO;privateRandomrand;privateSortedSet<Integer>sorteados;publicSorteio(inttamanho){if(tamanho>0){MAXIMO=tamanho;rand=newRandom();sorteados=newTreeSet<Integer>();}elsethrownewIllegalArgumentException("Tamanho deve ser maior que zero.");}publicintsortear(){intnumero=0;if(quantidadeSorteada()<MAXIMO){do{numero=(int)(rand.nextFloat()*MAXIMO)+1;}while(sorteados.contains(numero));sorteados.add(numero);}returnnumero;}publicSortedSet<Integer>getSorteados(){returnCollections.unmodifiableSortedSet(sorteados);}publicintquantidadeSorteada(){returnsorteados.size();}}
Qualquer dúvida poste ae cara, e lembre - se, mesmo sabendo que existe Collection Framework, se quer aprender arrays, tente fazer exemplos do tipo, vetores de ordenação, bubble sort, comparação de valores de indíce de vetores, e assim por diante ....
Espero ter ajudado
na paz :)
ivo_costa
Não quero cortar o teu barato, mais já faz 3 desde a última msg, eu acho que o cara já terminou a cadeira…
javaEd.com
[i]Não importa cara, outras pessoas podem ter a mesma dúvida, e esclarecerem da mesma forma