Faça um programa em JAVA que gere 6 cartoes de loteria com 8numeros em cada.
O código abaixo usa o método gerarNumerosAleatorios
para gerar um array de números aleatórios sem repetições e o método Arrays.sort
para ordenar os números em ordem crescente antes de imprimir cada cartão. Você pode ajustar os valores das variáveis numCartoes
, numNumeros
, minNumero
e maxNumero
para gerar cartões com outros valores.
import java.util.Arrays;
import java.util.Random;
public class Loteria {
public static void main(String[] args) {
// Definindo o número de cartões a serem gerados
int numCartoes = 6;
// Definindo o número de números em cada cartão
int numNumeros = 8;
// Definindo o intervalo de números possíveis para os cartões
int minNumero = 1;
int maxNumero = 60;
// Gerando os cartões
for (int i = 1; i <= numCartoes; i++) {
// Gerando um array de números aleatórios
int[] numeros = gerarNumerosAleatorios(numNumeros, minNumero, maxNumero);
// Ordenando os números em ordem crescente
Arrays.sort(numeros);
// Imprimindo o cartão gerado
System.out.printf("Cartão %d: %s%n", i, Arrays.toString(numeros));
}
}
// Método que gera um array de números aleatórios sem repetições
private static int[] gerarNumerosAleatorios(int numNumeros, int minNumero, int maxNumero) {
Random random = new Random();
int[] numeros = new int[numNumeros];
for (int i = 0; i < numNumeros; i++) {
int num;
do {
num = random.nextInt(maxNumero - minNumero + 1) + minNumero;
} while (Arrays.stream(numeros).anyMatch(n -> n == num));
numeros[i] = num;
}
return numeros;
}
}
Isto é a maneira errada de gerar uma lista de números aleatórios, pois numa situaçao limite pode demorar eternidades a obter números diferentes.
Para estes casos (com universo pequeno), a maneira mais facil é adicionar todos os elementos possívels a uma lista, fazer shuffle da lista e obter os n primeiros registos:
private static Integer[] gerarNumerosAleatorios(int numNumeros, int minNumero, int maxNumero) {
List<Integer> ret = IntStream.rangeClosed(minNumero, maxNumero).boxed().collect(Collectors.toList());
Collections.shuffle(ret);
return ret.subList(0,6).toArray(new Integer[]{});
}
Concordo, infelizmente nos últimos dias esse usuário tem respondido uma série de posts bem antigos e muitas vezes apresentando código que não é a solução do problema.
Ou então ele posta um código que outras pessoas já postaram (o que também não acrescenta nada ao tópico).
Estou tentando somente ajudar, pois o GUJ já me ajudou durante muito tempo e quando encontrava algo que não tinha dicas ou solução ficava triste e tinha que abrir um novo tópico com o mesmo assunto.
@hugokotsubo, @staroski .Não estou fazendo por mal, estou somente querendo ajudar mesmo.
@gpd38 É sempre bom ter mais gente querendo participar do fórum e ajudar. Mas eu diria pra ir com mais calma.
Quando for responder, analise bem tudo que já foi dito no tópico, para não repetir as mesmas coisas. Faça uma busca também, pois tem muito conteúdo repetido e várias coisas já foram respondidas antes em outros tópicos (aí é só botar o link em vez de reescrever tudo).
E principalmente, teste o seu código. Vi alguns casos em que ele não fazia o que era pedido, dá a impressão que nem sequer foi testado. Teve um inclusive que era sobre Python e vc respondeu com código Java. Esse tipo de coisa não ajuda, na verdade só polui o fórum.
É isso, espero que melhore sua participação, assim todos saem ganhando
Cara, pelo amor de Deus. Ajuda quem tá precisando no momento. 99% das dúvidas que aparecem aqui são recorrentes. Mesmo que haja tópicos sem resposta, provavelmente em outros tópicos elas já foram resolvidas. São na imensa maioria dúvidas simples, de gente que tá iniciando, tanto é que a maioria dos tópicos são abandonados. O ideal de um tópico é que, após uma resposta válida, ele seja marcado como resolvido. Nem isso você vai conseguir alcançar. E outra, suas respostas são mais do tipo de dar o peixe do que ensinar a pescar. Entendo sua boa vontade, mas acho que ela seria muito melhor empregada se você direcionasse sua energia para tópicos novos, de gente que precisa de ajuda no momento, não há 1, 2, 3, … 10 anos atrás.