Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Números randômicos sem repetição em Java

Boa noite pessoal !

Tô tentando criar um joguinho de bingo que gera 60 números randômicos sem repetir. Pra isso criei um método pra ter uma roleta gerando esses números.

Porém tá dando erro na seguinte parte:

if (iguais) { return roleta(); }

O código em questão é esse aqui embaixo:

Desde já agradeço, galera!

*A minha ideia é evitar usar recursos mais avançados justamente pra treinar a parte da lógica ;)

package treinoBingo;

import java.util.Random;

public class treinoBingo {

public void cartela () {}

public static String [] roleta () {

    Random random = new Random();

    String [] roletaString = new String [60];
    int [] roleta = new int [60];

    boolean iguais= false;


    for (int i = 0; i < roleta.length; i++) {
        roleta [i] = random.nextInt(60)+1;                        

        }for (int i= 0; i< roleta.length; i++) {
            for(int j= 0; j < roleta.length; j++) {
                if (i!=j) {
                    if (roleta[i]==roleta[j]) {
                        iguais = true;
                    }
                }
            }
    }
        if (iguais) {
            return roleta();
        }else {
            for (int i = 0; i < roleta.length; i++) {
                System.out.print(roleta[i]+"\t");

                roletaString[i] =""+ roleta[i];
            }
            return roletaString;                
        }        

}

public static void main(String[] args) {
    roleta();

}

}

2 respostas
solução!

Boa tarde Caio.

O Código que você enviou está entrando em loop infinido (até quebrar por falta recurso), pois o iguais nunca volta para false. Fiz esse pequeno ajuste e rodei aqui. Verifique se agora está ok.

package treinoBingo;

import java.util.Random;

public class treinoBingo {
public void cartela () {}

public static String [] roleta () {

    Random random = new Random();

    String [] roletaString = new String [60];
    int [] roleta = new int [60];

    boolean iguais= false;


    for (int i = 0; i < roleta.length; i++) {
        roleta [i] = random.nextInt(60)+1;                        

        }for (int i= 0; i< roleta.length; i++) {
            for(int j= 0; j < roleta.length; j++) {
                if (i!=j) {
                    if (roleta[i]==roleta[j]) {
                        iguais = true;
                    }else {
                        iguais = false;
                    }

                }
            }
    }
        if (iguais) {
            return roleta();
        }else {
            for (int i = 0; i < roleta.length; i++) {
                System.out.print(roleta[i]+"\t");

                roletaString[i] =""+ roleta[i];
            }
            return roletaString;                
        }        

}

public static void main(String[] args) {
    roleta();

}
}

Obrigadoooooo !

De coração, valeu mesmo Fernanda.

Vou corrigir aqui e continuar treinando esses fundamentos.

Um excelente fds pra vc !