Tenho um trabalho para entragar na facul de java, estou começando a aprender agora.
Preciso fazer um metodo que digita se você quer 6 ou 10 números, e ele gera esses números aleatórios, sem repetir, e exiba na tela.
Só que eu não posso usar array, matriz, nenhum tipo de vetor.
Andei pesquisando, existe HashSet, MapSet, mas não sei como funciona, seria o que estou procurando?É algum tipo de vetor?Qual seria a melhor solução?
Agradeço a todos pela atenção, tenham um bom dia e ótimo final de semana!
Entendi, então como poderia fazer para não ter números repetidos, sem ter que colocar diversos if, um monte de variaveis, etc???
Alguem pode me ajudar?
Sem usar vetor você pode é dividir o seu espaço numérico. Por exemplo, o primeiro número você gera entre 0-10, o segundo entre 11-20, o terceiro entre 21-30, e assim por diante. Dessa forma, você terá 6 números não repetidos, com certeza.
ArrayList, HashSet, HasMap, etc são estruturas parecidas com um Vetor. Com um Arraylist isso seria feito em 3 ou 4 linhas. Mas como não pode usar, tem que ser na unha mesmo.
Estou no segundo ano, a matéria é metodologia de desenvolvimento, e estou vendo Java desde o primeiro ano, e está muito básico ainda.
Na aula, ele apenas passa o proble, e pede para gente resolver.
Proibiu qualquer tipo de vetor.
Só que não queria fazer um monte de variavel, mais um monte de if, while…Acho que ia ficar muito sujo, porqueira…
Então resolvi pesquisar…
Não aguento mais ficar com o basicão…
Isso inclui arrays, String, e qualquer tipo de Collection (todas as implementações de Map, List, Set, Queue…).
Concordo, mas não há muito o que fazer. Você poderia tentar a solução do ViniGodoy.
Não deixe seu professor limitar seu aprendizado! Faça a proposta mas depois tente fazer o mesmo usando arrays, depois algum tipo de Collection e assim vai.
Tinha perguntado da String pois apesar dela ser um “vetor disfarçado”, esse disfarce dela é detalhe da sua implementação…
Mas como perguntou o ViniGodoy, o interessante seria descobrir o motivo do professor ter proibido vetores…
Para mim um array (vetor, matriz) é uma estrutura diferente de uma lista… (apesar de terem funções semelhantes)
Não classificaria uma lista como um tipo de vetor…
Já é o segundo exercício que vejo aqui que a mula do professor proíbe de usar vetores num problema de coleções de objetos.
Não sei para quê forçar o aluno a seguir a pior solução possível, só para forçar a pensar que existem outros métodos? O programa vai ficar 10x maior e 100x mais lerdo sem motivo algum.
Enfim, uma solução porca:
while (bolasRepetidas(bola1, bola2, bola3, bola4, bola5, bola6)) // checa se os números são únicos
{
bola1 = sorteio(1, 60);
bola2 = sorteio(1, 60);
bola3 = sorteio(1, 60);
bola4 = sorteio(1, 60);
bola5 = sorteio(1, 60);
bola6 = sorteio(1, 60);
}
Obs: Já aprenderam sobre listas ligadas? Não são vetores, mas funcionam tao bem quanto.
Voce pode usar a classe Random, ela tem o metodo netInt(), que você pode delimitar de onde ateh onde vc pega o numero, e na segunda vez vc ve se o numero é diferente do anterior!
Ponto fraco: no ultimo digito teria que verificar com outros 5 int’s, mas funcionaria!