Metodo Mega sena com HashSet, MapSet

Bom dia colegas!

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!

Se vc nao pode usar vetor, creio que HashSet vc tambem nao vai poder usar nao.

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.

Boa sorte!

hum…

será que utilizar uma String está liberado?

vc poderia ir acumulando os resultados gerados…

sempre que gerar , testa se já existe na String…

Tinha pensado nisso…

result = result + numero + " - ";

Mas como posso fazer esta verificação na String, comparando todos os valores?

O que seu professor deu em aula e pq ele proibiu vcs de usarem vetores?
Você está vendo o que na matéria?

Pq para mim, isso aí é disfarçar um vetor numa string. E eu também não aceitaria, se fosse seu professor.

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.

E ae…
E char não ajudaria?
char1, char2, char3…etc.
Ai fica easy…hehe.

Abs();

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! :smiley: