Loteria

Run Settings
LanguageJava
Language Version
Run Command
package frontend; import java.util.Arrays; import java.util.Random; import java.util.Scanner; import java.util.concurrent.ThreadLocalRandom; import java.util.stream.IntStream; public class Tela { static Scanner ler = new Scanner(System.in); static String finalizarPrograma = "N"; // static int quantidadeDeNumerosApostados = 6; // static double valorDaAposta = 0; // static int[] numerosApostados; // static int[] numerosSorteados; // static String confirmaValorDaAposta = "N"; static String confirmaApostaSimOuNao = "N"; // static String retornarAoMenuPrincipal; // static String retornaAoMenuPrincipalSimOuNao = "N"; // static String confirmaNumerosDaAposta = ""; public static void main(String[] args) { String opcaoDoMenuPrincipal; do { System.out.println(":: MENU PRINCIPAL ::"); System.out.println("[F]azer aposta"); System.out.println("[R]ealizar sorteio"); System.out.println("[S]air"); System.out.print("=> Digite a opcao desejada: "); opcaoDoMenuPrincipal = ler.nextLine().toUpperCase(); exibeOpcoesDoMenuPrincipal(opcaoDoMenuPrincipal); } while (finalizarPrograma.equals("N")); } public static void exibeOpcoesDoMenuPrincipal(String opcaoDoMenuPrincipal) { switch (opcaoDoMenuPrincipal) { case "F": while (confirmaApostaSimOuNao.equals("S")) { System.out.println("\n:: Aposta já realizada. Deseja refaze-la? [S]im / [N]ao: "); String refazerApostaSimOuNao = ler.nextLine().toUpperCase(); escolheSeVaiRefazerAposta(refazerApostaSimOuNao); } fazerAposta(); escolheNumerosDaAposta(quantidadeDeNumerosApostados); break; case "R": realizarSorteio(1, 60, quantidadeDeNumerosApostados); break; case "S": finalizarPrograma = "S"; break; default: System.out.println("\n:: Opcao invalida. Tente novamente...\n"); break; } } public static void escolheSeVaiRefazerAposta(String refazerApostaSimOuNao) { switch (refazerApostaSimOuNao) { case "S": break; case "N": confirmaNumerosDaAposta = "N"; break; default: System.out.println(":: Opcao invalida. Tente novamente...\n"); break; } } public static void confirmaAposta(String confirmaApostaSimOuNao) { switch (confirmaApostaSimOuNao) { case "S": confirmaValorDaAposta = "S"; break; case "N": confirmaValorDaAposta = "N"; System.out.print("=> Retornar ao Menu Principal? [S]im / [N]ao: "); retornaAoMenuPrincipalSimOuNao = ler.nextLine().toUpperCase(); escolheSeRetornaAoMenuPrincipal(retornarAoMenuPrincipal); break; default: System.out.println("\n:: Opcao invalida. Tente novamente...\n"); break; } } public static void escolheSeRetornaAoMenuPrincipal(String retornarAoMenuPrincipalSimOuNao) { switch (retornaAoMenuPrincipalSimOuNao) { case "S": retornaAoMenuPrincipalSimOuNao = "S"; break; case "N": retornaAoMenuPrincipalSimOuNao = "N"; break; default: System.out.println("\n:: Opcao invalida. Tente novamente...\n"); break; } } public static void fazerAposta() { do { System.out.println(":: FAZER APOSTA ::"); System.out.println("nº Valor Sena Quina Quadra"); System.out.println("6 4,50 50.063.860 154.518 2.332"); System.out.println("7 31,50 7.151.980 44.981 1.038"); System.out.println("8 126,00 1.787.995 17.192 539"); System.out.println("9 378,00 595.998 7.791 312"); System.out.println("10 945,00 238.399 3.973 195"); System.out.println("11 2.079,00 108.363 2.211 129"); System.out.println("12 4.158,00 54.182 1.317 90"); System.out.println("13 7.722,00 29.175 828 65"); System.out.println("14 13.513,50 16.671 544 48"); System.out.println("15 22.522,50 10.003 370 37"); System.out.print("=> Selecione a quantidade de numeros da aposta: "); while (!ler.hasNextInt()) { System.out.print("\n=> Escolha só numeros entre 6 e 15 e aperte ENTER..."); ler.next(); } quantidadeDeNumerosApostados = ler.nextInt(); while (quantidadeDeNumerosApostados < 6 || quantidadeDeNumerosApostados > 15) { System.out.print("\n:: Escolha numeros entre 6 e 15 e aperte ENTER..."); quantidadeDeNumerosApostados = ler.nextInt(); } while (confirmaValorDaAposta.equals("N")) { defineValorDaAposta(quantidadeDeNumerosApostados); System.out.println(":: Valor para " + quantidadeDeNumerosApostados + " numeros: R$ " + valorDaAposta); System.out.print("=> Confirma aposta? [S]im / [N]ao: "); confirmaApostaSimOuNao = ler.nextLine().toUpperCase(); confirmaAposta(confirmaApostaSimOuNao); } escolheNumerosDaAposta(quantidadeDeNumerosApostados); } while (confirmaValorDaAposta.equals("N")); } public static double defineValorDaAposta(int quantidadeDeNumerosApostados) { switch (quantidadeDeNumerosApostados) { case 6: valorDaAposta = 4.50; break; case 7: valorDaAposta = 31.50; break; case 8: valorDaAposta = 126.00; break; case 9: valorDaAposta = 378.00; break; case 10: valorDaAposta = 945.00; break; case 11: valorDaAposta = 2079.00; break; case 12: valorDaAposta = 4158.00; break; case 13: valorDaAposta = 7722.00; break; case 14: valorDaAposta = 13513.50; break; case 15: valorDaAposta = 22522.50; break; } return valorDaAposta; } public static int[] escolheNumerosDaAposta(int quantidadeDeNumerosApostados) { do { numerosApostados = new int[quantidadeDeNumerosApostados]; for(int i = 0; i < quantidadeDeNumerosApostados;){ int[] numerosApostadosSemZero = Arrays.stream(numerosApostados).filter(j -> j != 0).toArray(); if (i != 0) { System.out.println("\n:: Numeros apostados: " + Arrays.toString(numerosApostadosSemZero)); } System.out.print("=> Digite o " + (i + 1) + "º numero, de 1 a 60 (sem repeti-los): "); numerosApostados[i] = ler.nextInt(); while (numerosApostados[i] < 1 || numerosApostados[i] > 60) { System.out.println("=> Escolha apenas entre 1 e 60 e aperte ENTER..."); numerosApostados[i] = ler.nextInt(); } i++; } confirmaNumerosDaAposta = "S"; } while (confirmaNumerosDaAposta.equals("N")); return numerosApostados; } public static int[] realizarSorteio(int minimo, int maximo, int quantidadeDeNumerosSorteados) { do { numerosSorteados = new int[quantidadeDeNumerosSorteados]; for (int i = 0; i < numerosSorteados.length; i++) { // Gera numeros aleatorios mais aleatorios que o Math.Random, na minha opiniao Random numeroAleatorio = ThreadLocalRandom.current(); int numeroSorteado = numeroAleatorio.nextInt(maximo) + minimo; // Atribui ele ao array numerosSorteados numerosSorteados[i] = numeroSorteado; // Retira o indice com zero (nao inicializado) do array numerosSorteados int[] numerosSorteadosSemZero = Arrays.stream(numerosSorteados).filter(j -> j != 0).toArray(); // Retira os numeros repetidos e mantem a ordenacao int[] numerosNaoRepetidos = IntStream.of(numerosSorteadosSemZero).distinct().toArray(); // Se há diferenca entre os arrays pela exclusao de numero repetido, gerar novo numero aleatorio if (numerosSorteadosSemZero.length - numerosNaoRepetidos.length != 0) { numeroSorteado = numeroAleatorio.nextInt(maximo) + minimo; numerosSorteados[i] = numeroSorteado; } } } while (confirmaNumerosDaAposta.equals("S")); System.out.println("\n:: Você ainda nao fez a aposta. Voltando para o menu principal...\n"); return numerosSorteados; } //public static void resultadoFinal(int[] numerosApostados, int[] numerosSorteados) { //} }
package frontend; import java.util.Arrays; import java.util.Locale; import java.util.Scanner; import java.util.stream.IntStream; public class Tela2 { // Sufixo dos nomes das variaveis e metodos: exibe, seleciona, envia, confirma, verifica, compara... // Declaracao de variaveis que serao usadas entre as paginas static Scanner ler = new Scanner(System.in); static int quantidadeDeNumerosAApostar = 0; static double valorDaAposta; static int[] numerosApostados; static int[] numerosApostadosNaoRepetidos; // O velho e bom metodo main public static void main(String[] args) { exibeMenuPrincipal(); } public static void exibeMenuPrincipal() { System.out.println(""); System.out.println("=================================================="); System.out.println("| MENU PRINCIPAL |"); System.out.println("|================================================|"); System.out.println("| [F]azer aposta |"); System.out.println("| [R]ealizar sorteio |"); System.out.println("| [S]air |"); System.out.println("=================================================="); selecionaOpcoesDoMenuPrincipal(); } public static void selecionaOpcoesDoMenuPrincipal() { System.out.print("=> Digite a opcao desejada: "); char opcoesDoMenuPrincipal = ler.next().toUpperCase().charAt(0); switch (opcoesDoMenuPrincipal) { case 'F': exibeTelaDeApostas(); break; case 'R': confirmaSeAApostaFoiFeita(); // Funcao a ser implementada [WIP] exibeTelaDoSorteio(); break; case 'S': break; default: System.out.println("\n:: Opcao invalida. Tente novamente..."); selecionaOpcoesDoMenuPrincipal(); break; } } public static void exibeTelaDeApostas() { System.out.println(""); System.out.println("======================================================"); System.out.println("| FAZER APOSTA |"); System.out.println("|====================================================|"); System.out.println("| nº | Valor | Sena | Quina | Quadra |"); System.out.println("|------|------------|------------|---------|---------|"); System.out.println("| 6 | 4,50 | 50.063.860 | 154.518 | 2.332 |"); System.out.println("| 7 | 31,50 | 7.151.980 | 44.981 | 1.038 |"); System.out.println("| 8 | 126,00 | 1.787.995 | 17.192 | 539 |"); System.out.println("| 9 | 378,00 | 595.998 | 7.791 | 312 |"); System.out.println("| 10 | 945,00 | 238.399 | 3.973 | 195 |"); System.out.println("| 11 | 2.079,00 | 108.363 | 2.211 | 129 |"); System.out.println("| 12 | 4.158,00 | 54.182 | 1.317 | 90 |"); System.out.println("| 13 | 7.722,00 | 29.175 | 828 | 65 |"); System.out.println("| 14 | 13.513,50 | 16.671 | 544 | 48 |"); System.out.println("| 15 | 22.522,50 | 10.003 | 370 | 37 |"); System.out.println("======================================================"); selecionaQuantidadeDeNumerosDaTelaDeApostas(); } public static void selecionaQuantidadeDeNumerosDaTelaDeApostas() { System.out.print("=> Selecione a quantidade de numeros da aposta: "); while (!ler.hasNextInt()) { System.out.print("\n=> Escolha só numeros entre 6 e 15 e aperte ENTER..."); ler.next(); } int quantidadeDeNumerosAApostar = ler.nextInt(); switch (quantidadeDeNumerosAApostar) { case 6: valorDaAposta = 4.50; break; case 7: valorDaAposta = 31.50; break; case 8: valorDaAposta = 126.00; break; case 9: valorDaAposta = 378.00; break; case 10: valorDaAposta = 945.00; break; case 11: valorDaAposta = 2079.00; break; case 12: valorDaAposta = 4158.00; break; case 13: valorDaAposta = 7722.00; break; case 14: valorDaAposta = 13513.50; break; case 15: valorDaAposta = 22522.50; break; default: System.out.print("\n:: Digite um numero de 6 a 15 e aperte ENTER...\n"); selecionaQuantidadeDeNumerosDaTelaDeApostas(); } confirmaValorDaAposta(quantidadeDeNumerosAApostar); } public static void confirmaValorDaAposta(int opcoesDaTelaDeApostas) { System.out.println(""); System.out.printf(Locale.FRANCE,":: Valor para %d numeros: R$ %.2f\n", opcoesDaTelaDeApostas, valorDaAposta); System.out.print("=> Confirma aposta? [S]im / [N]ao: "); char confirmaValorDaAposta = ler.next().toUpperCase().charAt(0); switch (confirmaValorDaAposta) { case 'S': selecionaNumerosASeremApostados(opcoesDaTelaDeApostas); break; case 'N': char confirmaRetornoAoMenuPrincipal = ' '; confirmaRetornoAoMenuPrincipal(confirmaRetornoAoMenuPrincipal); break; default: System.out.println("\n:: Opcao invalida. Tente novamente..."); confirmaValorDaAposta(opcoesDaTelaDeApostas); break; } } public static void confirmaRetornoAoMenuPrincipal(char confirmaRetornoAoMenuPrincipal) { System.out.println(""); System.out.print("=> Retornar ao Menu Principal? [S]im / [N]ao: "); confirmaRetornoAoMenuPrincipal = ler.next().toUpperCase().charAt(0); switch (confirmaRetornoAoMenuPrincipal) { case 'S': exibeMenuPrincipal(); break; case 'N': exibeTelaDeApostas(); break; default: System.out.println("\n:: Opcao invalida. Tente novamente..."); confirmaRetornoAoMenuPrincipal(confirmaRetornoAoMenuPrincipal); break; } } public static void selecionaNumerosASeremApostados(int quantidadeDeNumerosAApostar) { numerosApostados = new int[quantidadeDeNumerosAApostar]; for (int i = 0; i < quantidadeDeNumerosAApostar;) { System.out.println(""); System.out.print("=> Digite o " + (i + 1) + "º numero, de 1 a 60 (sem repeti-los): "); verificaSeProximoInputEUmNumero(i); numerosApostados[i] = ler.nextInt(); if (verificaSeExisteNumerosDuplicados() == 0) { i++; } else { System.out.println(""); System.out.printf("[%d] e um numero repetido.\n", numerosApostados[i]); } System.out.printf("\nNumeros selecionados: %s.", Arrays.toString(numerosApostadosNaoRepetidos)); } // for (int i = 0; i < quantidadeDeNumerosAApostar - 1;) { // while (numerosApostados[i] < 1 || numerosApostados[i] > 60) { // System.out.println(""); // System.out.print("=> Digite o " + (i + 1) + "º numero, de 1 a 60 (sem repeti-los): "); // // while (!ler.hasNextInt()) { // System.out.println(""); // System.out.print("=> Escolha só numeros entre 1 e 60 e aperte ENTER..."); // ler.next(); // } // // numerosApostados[i] = ler.nextInt(); // } // } } public static int verificaSeExisteNumerosDuplicados() { int[] numerosApostadosSemZero = IntStream.of(numerosApostados).filter(j -> j != 0).toArray(); numerosApostadosNaoRepetidos = IntStream.of(numerosApostadosSemZero).distinct().toArray(); int diferenca = numerosApostadosSemZero.length - numerosApostadosNaoRepetidos.length; return diferenca; } public static void verificaSeProximoInputEUmNumero(int i) { while (numerosApostados[i] < 1 && numerosApostados[i] > 60) { while (!ler.hasNextInt()) { System.out.println(""); System.out.print("=> Escolha só numeros entre 1 e 60 e aperte ENTER..."); ler.next(); } } } public static void confirmaNumerosApostados() { } public static void confirmaSeAApostaFoiFeita() { } public static void exibeTelaDoSorteio() { } public static void comparaOsNumerosSorteadosComOsApostados() { } public static void exibeResultadoFinal() { } }
Editor Settings
Theme
Key bindings
Full width
Lines