Pfv me ajudem!

Oi pessoal, eu tenho esse exercício de mega sena:
(Elabore um algoritmo que registre as apostas da Mega-Sena. O jogador pode realizar
apostas de 6 até 15 números, entre 1 e 60. O algoritmo deve então solicitar que o
usuário informe:

  1. a quantidade de números da sua aposta;
  2. receber as apostas (entre 1 e 60);
  3. mostrar a aposta realizada ordenada e;
  4. mostrar o valor a ser cobrado por ela.
    O valor da aposta deve ser obtido conforme tabela abaixo:
    Importante: para ser uma aposta, deve ser um número inteiro – e não existem
    apostas com número zero (0))

E eu já produzi isso em Java NetBeans sem swing:

import java.util.ArrayList;
import java.util.Scanner;

public class Mega_Sena {

public static void main(String[] args) {
	Scanner apostaScanner = new Scanner(System.in);
	Scanner numerosDaApostaScanner = new Scanner(System.in);
	System.out.print("Informe quantos números quer apostar: ");
	int apostas = apostaScanner.nextInt();

	// Sistema de inicialização
	if (apostas >= 6 && apostas <= 15) {
		ArrayList<Integer> numerosMega = new ArrayList();
		int i = 1;
		System.out.print("[");
		while (i <= 60) {
			System.out.print(i + " ");
			i++;

		}
		System.out.println("]");
		System.out.println("Aposte em " + apostas + " números dessa lista");
		// fim do sistema de inicialização

		// coleta de números para comapração
		for (int j = 0; j < apostas; j++) {
			System.out.println("Informe as apostas");
			int aux = numerosDaApostaScanner.nextInt();
			if (numerosMega.contains(aux)) {
				System.out.println("Valor já informado, Programa encerrado");
				System.exit(0);
			}
			if (aux >= 1 && aux <= 60) {
				numerosMega.add(aux);
			}

			else {
				System.out.println("Valor inesperado informado, Programa Encerrado");
				System.exit(0);
			}
		}
		System.out.println(numerosMega);

		switch (apostas) {
		case 6:
			System.out.println("Valor da aposta: R$4,50");
			break;
		case 7:
			System.out.println("Valor da aposta: R$31,50");
			break;
		case 8:
			System.out.println("Valor da aposta: R$126,00");
			break;
		case 9:
			System.out.println("Valor da aposta: R$378,00");
			break;
		case 10:
			System.out.println("Valor da aposta: R$945,00");
			break;
		case 11:
			System.out.println("Valor da aposta: R$2.079,00");
			break;
		case 12:
			System.out.println("Valor da aposta: R$4.158,00");
			break;
		case 13:
			System.out.println("Valor da aposta: R$7.722,00");
			break;
		case 14:
			System.out.println("Valor da aposta: R$13.513,00");
			break;
		case 15:
			System.out.println("Valor da aposta: R$22.522,50");
			break;
		}
	} 
}

}

— Só que há um problema, eu coloquei um system para saída caso haja alguma aposta repetida ou cujo valor é igual a zero, só que meu professor quer que caso haja repetição ou valor igual a zero que o usuário informe novamente essa aposta em questão e siga com o programa, mas eu não sei como fazer isso, podem me ajudar por favor a achar uma solução?
Agradeço desde já.

Olá Luiz.

Seu código para porque você tem que criar laços para garantir a entrada de dados na quantidade que você precisa

Segue um código que funciona para o que você precisa.

É logico que tem 1000 maneiras de fazê-lo mais enxuto usando lambda e outras funções.

tentei comentar pra que fique claro. Não use meu código pra mostrar ao seu professor. crie o seu usando-o como referência assim você aprende melhor.

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Scanner;

public class Main {

public static void main(String[] args) {
	// OS LIMITES DO SEU ARRAY NUEMROS POSSIVEIS
	int	menorNumeroPossivel	= 1;
	int	maiorNumeroPossível	= 60;

	// OS LIMITES DO SEU ARRAY NUMEROS POR APOSTA
	int	menorApostaPossivel	= 6;
	int	maiorApostaPossível	= 15;

	Scanner	apostaScanner			= new Scanner(System.in);
	Scanner	numerosDaApostaScanner	= new Scanner(System.in);
	System.out.print("Informe quantos números quer apostar: ");

	int qtdeNumerosApostaCapturada = apostaScanner.nextInt();

	// ESTE LOOP GARANTE QUE OS NUMEROS DIGITADOS PARA LIMITE DAS APOSTAS FICARAO ENTRE 6 e 15
	while (qtdeNumerosApostaCapturada < 6 || qtdeNumerosApostaCapturada > 15) {
		System.out.println("Digite um numero entre 6 e 15");
		qtdeNumerosApostaCapturada = apostaScanner.nextInt();
	}

	// APOSTAS SERÁ O SEU ARRAY DE APOSTAS E SEMPRE TERA O TAMANHO ESCOLHIDO PELO APOSTADOR
	ArrayList<Integer> apostas = new ArrayList<Integer>();

	// O LOOPABAIXO GARANTE A LEITURA DE NUMEROS ATÉ LIMITE DE APOSTA ESCOLHIDO. ALGO COMO "SE O APOSTADOR ESCOLHEU 6 LEIA 6 NUMEROS
	while (apostas.size() < qtdeNumerosApostaCapturada) {

		// FAZ A LEITURA DOS VALORES
		System.out.println("Informe as apostas");
		int aux = numerosDaApostaScanner.nextInt();

		// TESTA SE O NUMERO DIGITADO ESTA NOS LIMITES 1 e 60
		if (aux >= menorNumeroPossivel && aux <= maiorNumeroPossível) {

			// TESTA SE O NUMERO DIGITADO JA NAO EXISTE NA APOSTA
			if (!apostas.contains(aux)) {
				// SE NAO EXISTIR ADICIONA NA LISTA
				apostas.add(aux);
			} else {
				// SE EXISTIR AVISA E CONTINUA SOLICITANDO
				System.out.println("Erro este numero já foi escolhido");
			}
		} else {
			// Se O NUMERO DIGITADO ESTIVER FORA DO LIMITE 1 e 60 INFORMA ERRO E CONTINUA SOLICITANDO
			System.out.println("Numero invalido, digite novamente.");
		}

	}

	// A CLASSE COLLECTIONS ORDENA OS NUEMROS EM ORDEM CRESCENTE DENTRO DA LISTA
	Collections.sort(apostas);

	// LOOP FOR EACH APENAS PARA IMPRIMIR A APOSTA APÓS SAIR DO LOOP
	System.out.println("VOCE APOSTOU NOS NUMEROS:");
	apostas.forEach(s -> System.out.println(s));

	// SEU SWITCH APENAS PARA IMPRIR O PREÇO DAS APOSTAS DE ACORDO COM A QUANTIDADE DE NUMEROS
	switch (qtdeNumerosApostaCapturada) {
		case 6:
			System.out.println("Valor da aposta: R$4,50");
			break;
		case 7:
			System.out.println("Valor da aposta: R$31,50");
			break;
		case 8:
			System.out.println("Valor da aposta: R$126,00");
			break;
		case 9:
			System.out.println("Valor da aposta: R$378,00");
			break;
		case 10:
			System.out.println("Valor da aposta: R$945,00");
			break;
		case 11:
			System.out.println("Valor da aposta: R$2.079,00");
			break;
		case 12:
			System.out.println("Valor da aposta: R$4.158,00");
			break;
		case 13:
			System.out.println("Valor da aposta: R$7.722,00");
			break;
		case 14:
			System.out.println("Valor da aposta: R$13.513,00");
			break;
		case 15:
			System.out.println("Valor da aposta: R$22.522,50");
			break;
	}
}

}

Espero ter ajudado.

1 curtida

Ajudou bastante na montagem do meu, mas tu poderia apagar sua resposta?

Não entendi o porquê disso.