Sem repetição

5 respostas
Y
eu gostaria de saber como eu faço para não repetir os numeros aleatorios
import javax.swing.*;
public class Bingo {
    public Bingo() {
    }
    public static void main(String[] args) {
      int c[][]=new int[5][5];
      int s[]=new int[60];
      int contl1=0, contl2=0, contl3=0, contl4=0, contl5=0, contt=0;
      double numsort;
      String cartela="";
      for(int i=0;i<5;i++){
       	for(int j=0;j<5;j++){
       	  double x=Math.random()*60;
       	  c[i][j]=(int)x;
       	}
      }
      for(int i=0;i<5;i++){
       	for(int j=0;j<5;j++){
       	  cartela=cartela+"         "+c[i][j];
       	}
       	cartela=cartela+"\n";
      }
       		
      JOptionPane.showMessageDialog(null,"Sua cartela é:"+"\n"+cartela);
      do{
       	double x=Math.random()*59+1;
       	numsort=x;
       	for(int i=0;i<5;i++){
       	  for(int j=0;j<5;j++){
       	    if(numsort!=c[i][j]){
       		  if(c[i][j]==x){
       		    contt++;
       		    if(i==1){
       		      contl1++;
       		      if(contl1==5)
       		        JOptionPane.showMessageDialog(null,"A 1º linha foi completada. ");
       			}
       			if(i==2){
       			  contl2++;
       			  if(contl1==5)
       		        JOptionPane.showMessageDialog(null,"A 2º linha foi completada. ");
       			}
       			if(i==3){
       			  contl3++;
       			  if(contl1==5)
       				JOptionPane.showMessageDialog(null,"A 3º linha foi completada. ");
       			 }
       			 if(i==4){
       			   contl4++;
       			   if(contl1==5)
       				 JOptionPane.showMessageDialog(null,"A 4º linha foi completada. ");
       			 }
       			 if(i==5){
       			   contl5++;
       			   if(contl1==5)
       				 JOptionPane.showMessageDialog(null,"A 5º linha foi completada. ");
       			 }
       		  } 
            }
          }
       	}
      }while(contt==25);
      JOptionPane.showMessageDialog(null,"a cartela foi completa");
    }
}

5 Respostas

alucardeck

deu ateh vontade de resolver o exercicio inteiro…
mas a etica não permite xD

tipo… nao de um passo maior q a perna…

vc nao deveria controlar os numeros repetidos… enquanto vc não fazer os numeros funcionarem…
por exemplo…

por mais q vc sorteie um numero X

esta uma bagunça e verificação pra saber se esse numero existe

double x=Math.random()*59+1;

numsort=x;

??? x = numsort  praq 2 variaveis ?

nao seria melhor

double numsort = Math.random()*59+1  ?

alias… int numsort = (int)(Math.random()*60)+1 ?

depois … ok … for(I) for(J)…

mas if(numsort!=c[i][j]) … se o numero for diferente ao C[i][j] ele prossegue … não deveria ser igual?
if(numsort==c[i][j]…

e depois vc fez o c[i][j]==x
onde X já seria o numsort… entao essa condição eh a mesma q a anterior… e inversa a ela

esses contl1 contl2… contl3…
nao poderia ser um array? int[] contl = new int[5];

ai ao inves de fazer contl1++
vc faria contl[i]++
odne I jah seria o numero da linha q vc esta

esses são alguns dos erros q encontrei… com certeza existem varios outros

Fox_McCloud

Aff…

Ao invés de tantos ifs use pelo menos um switch…!

Aliás… isso aí merece uma bela refatorada!

:smiley:

alucardeck

if(numsort!=c[i][j]){ if(c[i][j]==x){ contt++; if(i==1){ contl1++; if(contl1==5) JOptionPane.showMessageDialog(null,"A 1º linha foi completada. "); } if(i==2){ contl2++; if(contl1==5) JOptionPane.showMessageDialog(null,"A 2º linha foi completada. "); } if(i==3){ contl3++; if(contl1==5) JOptionPane.showMessageDialog(null,"A 3º linha foi completada. "); } if(i==4){ contl4++; if(contl1==5) JOptionPane.showMessageDialog(null,"A 4º linha foi completada. "); } if(i==5){ contl5++; if(contl1==5) JOptionPane.showMessageDialog(null,"A 5º linha foi completada. "); } } }

o mais engraçado eh q… o codigo ai em cima poderia virar…

if(numsort==c[i][j]{
  contt++;
  contl[i]++;
  if(contl[i]==5) JOptionPane.showMessageDialog(null,"A "+(i+1)+"º linha foi completada.");
}
Y

na verdade o programa não tinha o numsort , esse eu coloquei depois quando eu estava tentando fazer o programa não repetir numeros. e o switch ao cara que esta fazendo comigo ele ainda não entendeu como usar , e para não confundir mais ele eu preferir fazer com o if mesmo.
mas agora o que eu preciso mesmo é como fazer para não repetir numeros

alucardeck

yuribom:
na verdade o programa não tinha o numsort , esse eu coloquei depois quando eu estava tentando fazer o programa não repetir numeros. e o switch ao cara que esta fazendo comigo ele ainda não entendeu como usar , e para não confundir mais ele eu preferir fazer com o if mesmo.
mas agora o que eu preciso mesmo é como fazer para não repetir numeros

desculpa… mas eu acho q se alguem explicar como não fazer numeros repitidos… quem vai se confundir é vc…

coloquei varias dicas nos outros posts… qdo vc conseguir aplicar elas e me mostrar…
ai sim eu te ajudo com o proximo passo… =)

Criado 8 de julho de 2008
Ultima resposta 8 de jul. de 2008
Respostas 5
Participantes 3