Mega - Sena repetida :(

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:

[code]
import javax.swing.JOptionPane;

public class Main {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {

sena1 rodar = new sena1();
 
int pergunta = JOptionPane.showConfirmDialog(null, "Deseja realizar sorteio?");   
  if(pergunta != 0)
  JOptionPane.showMessageDialog(null,"Obrigado!");
 
  else if(pergunta == 0){
  {

      do
  
      {    
  for (int i = 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);

}
}
}
}[/code]

e a classe auxiliar:

import java.util.ArrayList;
public class sena1 {
 
   
    
int num[] = new int[60];    
int i;
String guarda = " ";

 
public int gerarnumeros()
{
    return (int) (Math.random() * 60 + 1);
}

public void definirnumeros()

{
    
    num[i] = gerarnumeros(); 
    
}  

public void guardanumero()

{
      guarda = guarda  + num[i] + ", "; 
      
   }                         
          
}

Vlw!

Vê se ajuda:

http://www.guj.com.br/java.tutorial.artigo.17.1.guj

Flw

[quote=sgtbreitner]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:[/quote]

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.

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

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?

cara,

as dicas ja foram dadas acima…

Não usa o Math.random()…

Usa o new Random().nextInt(60) + 1… ele vai fazer o que vc quer…

se vc usar

Random r = new Random();

for (i = 0; i < 6; i++)
     jogo[i] = r.nextInt(60) + 1

ele não vai repetir os números (pelo menos é esperado que não)…

ai eh soh verificar se tem números repetidos…

[]'s

ok, para descobrir se há números repetidos eu fiz assim:

public int gerarnumeros()
{
         
return new Random().nextInt(7) + 1;
    
}
public void definirnumeros()
{
    
      num[i] = gerarnumeros();
     if (num[i] == i ){
         i = gerarnumeros();
     }
}

mas ainda assim está saindo números repetidos, devo estar comparando de forma errada…??

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.

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?

ou se tiver algum exemplo também ajuda!

cara uma pergunta. . esse exercicio é pra aula de MAC ?

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?

sim, mas não deixa de ser uma duvida… você conseguiu?

Bruno

Não sei como fazer isso!

sim, você conseguiu?

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?[/quote]

não, to pegando Java agora…

sim, você conseguiu?[/quote]

consegui cara . me manda por mp com seu msn ae eu tento te ajuda
abraco

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.

Até!

Algums códigos simpels que devem ajudar

public boolean contains(int[] numeros, int numero){

  for(int i : numeros)
   if(i == numero)
     return true;

  return false;
}

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.