Bom… eu criei uma função “escolha” que vai receber um parâmetro inteiro no qual o usuário vai digitar.
A partir da escolha do usuário eu vamos pra função “fazer jogo” que tem uma estrutura switch conforme mostrarei mais na frente.
O meu programa roda perfeitamente quando eu escolho a opção 1 que gera números aleatórios, entretanto quando uso a opção 2 no qual eu devo digitar os números ele dá o seguinte erro abaixo:
Exception in thread “main” java.util.NoSuchElementException
at java.base/java.util.Scanner.throwFor(Scanner.java:937)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at Loteria.Usuario.fazerJogo(Usuario.java:58)
at Loteria.SistemaLoterica.main(SistemaLoterica.java:11)
Segue o código abaixo:
int escolha() {
System.out.println("Seja bem vindo ao programa: \n*** Mega do Lepo-Lepo ***");
System.out.println("Escolha a forma como deseja jogar... \n");
Scanner entrada = new Scanner(System.in);
System.out.println("Gerar números aleatórios.\nDigite:1\n");
System.out.println("Escolher seus números.\nDigite:2");
int valor = entrada.nextInt();
entrada.close();
return valor;
}
int[] fazerJogo(int escolha) {
int[] numeroSortiado = new int[6];
switch (escolha) {
case 1:
for (int i = 0; i < 6; i++) {
numeroSortiado[i] = (int) (1 + Math.random() * 60);
for (int j = 0; j < 6; j++) {
numeroSortiado[j] = numeroSortiado[i];
// essa estrutura é para evitar gerar numero repetitivos
while ((numeroSortiado[i] == numeroSortiado[j]) && (j != i)) {
numeroSortiado[j] = (int) (1 + Math.random() * 60);
}
}
}
System.out.println("Seu número sortiado foi: " + Arrays.toString(numeroSortiado));
break;
case 2:
Scanner entrada = new Scanner(System.in);
for (int i = 0; i < 6; i++) {
System.out.println("Digite o " + (i + 1) + "º" + " número inteiro:");
numeroSortiado[i] = entrada.nextInt();
}
System.out.printf(Arrays.toString(numeroSortiado));
entrada.close();
break;
}
return numeroSortiado;
}

