Numeros randomicos

3 respostas
C

alguem pode me dizer o que esta dando errado nesse codigo
eu não posso repetir os numeros mas ele não esta lendo os 8 numeros

for(int x = 0; x < 8; x++){ a=(int)(Math.random()*8); for(int n=0; n<8; n++){ if(vetor[n] == a){ achou = true; } } if (achou == false){ vetor[x] = a; System.out.println("t "+a); } achou = false; }

3 Respostas

S

tenta assim...

int a;
        int x = 0;
        int n = 0;
        int[] vetor = new int[8];
        boolean achou = false;

        while( x < 8) {
            a = (int) (Math.random() * 8);
            
            while (n < x) {
                if (vetor[n] == a) {
                    achou = true;
                }
                n++;
            }
            n = 0;
            
            if (achou == false) {
                vetor[x] = a;
                x++;
                System.out.println("t " + a);
            }
            achou = false;
        }
C

mas por que no meu jeito não deu certo?

S

Pq ele vai passar so 8x no for... ai tipo se ele acha 2 numeros repetidos seu vetor vai ter so 6 numeros
desse jeito ele so vai sair do laço while quando o vetor tiver 8 numeros...

Achei este outro codigo, por WendersonLP:
http://www.guj.com.br/posts/list/147358.java#794879

Random rand = new Random();
      ArrayList<Integer> list = new ArrayList<Integer>();
      int quantidadeDeNumeros = 10;

      for (int i = 0; i < quantidadeDeNumeros;i++) {
           int numeroAuxiliar = rand.nextInt(10); 

           // enquanto o número contiver na lista é lido outro número
           while (list.contains(numeroAuxiliar)) {
                 numeroAuxiliar = rand.nextInt(10); 
           }
           list.add(numeroAuxiliar);
      }
      System.out.println(list);
    }
Criado 14 de dezembro de 2009
Ultima resposta 14 de dez. de 2009
Respostas 3
Participantes 2