Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Switch Case com retorno ao ponto inicial

Olá devs, vocês pode me ajudar? Estou criando um seletor de planos de celular aqui no código mas estou quebrando a cabeça na hora da escolha, pois quando o console abre e é digitada a opção errada o programa encerra, eu queria que quando a opção errada fosse digitada ele retornasse o menu novamente.

//CODIGO OMITIDO

    System.out.println("-----------------------------------------" + "\n" + 
                        "BEM VINDO AO SISTEMA DE PLANOS DA MJVFONE" + "\n" +
                        "-----------------------------------------" + "\n" +
                        "DIGITE A OPÇÃO DESEJADA: " + "\n" +
                        "[1] Para assinar o PLANO BÁSICO" + "\n" + 
                        "[2] Para assinar o PLANO PREMIUM" + "\n" + 
                        "[3] Para assinar o PLANO GOLD" + "\n" +
                        "-----------------------------------------");


        Scanner sc = new Scanner(System.in);


        int escolha = sc.nextInt();

    switch (escolha) {

    case 1:
        System.out.println(basic);
        break;
    case 2:
        System.out.println(premium);
        break;
    case 3:
        System.out.println(gold);
        break;
    default:
        System.out.println("Opção inválida" + "\n" + "Por favor, escolha um de nossos serviços.");

    }

//CODIGO OMITIDO

2 respostas
solução!

Oie Leonardo, tudo bem com você?

Segue código com essa implementação de retorno quando a opção errada é digitada:

public class TestePlanos {

    public static void main(String[] args) {

        Escolha esc = new Escolha();

        boolean val = false;

        while(val == false) { // Enquanto "val"for "false" o while vai ficar fazendo loop, mas quando se tornar "true" ele vai parar
            int opc = esc.menu();
            val = esc.escolher(opc);
        }    
    }
}


class Escolha {


    public boolean escolher(int escolha) {
        switch (escolha) {

        case 1:
            System.out.println("basic");
            return true;
        case 2:
            System.out.println("premium");
            return true;

        case 3:
            System.out.println("gold");
            return true;
        default:
            System.out.println("Opção inválida" + "\n" + "Por favor, escolha um de nossos serviços.");
        }
        return false; // Caso nenhuma das opções acima tenha sido escolhida ele cai aqui nesse "return false", fazendo com que o while rode novamente

    }

    public int menu() {
         System.out.println("-----------------------------------------" + "\n" + 
                 "BEM VINDO AO SISTEMA DE PLANOS DA MJVFONE" + "\n" +
                 "-----------------------------------------" + "\n" +
                 "DIGITE A OPÇÃO DESEJADA: " + "\n" +
                 "[1] Para assinar o PLANO BÁSICO" + "\n" + 
                 "[2] Para assinar o PLANO PREMIUM" + "\n" + 
                 "[3] Para assinar o PLANO GOLD" + "\n" +
                 "-----------------------------------------");


         Scanner sc = new Scanner(System.in);


             int escolha = sc.nextInt();

             return escolha; // retorna o numero que o usuário escreveu
    }
}

Como você pode ver acima, eu peguei a lógica do "menu" e do "switch case" e coloquei cada um em um método, e ambos dentro de uma mesma classe chamada "Escolha". Por ultimo na classe "TestePlano", dentro do método "main" eu instanciei um objeto "Escolha" e defini um while que irá rodar infinitamente enquanto a variável "val" for "false", se ela se tornar "true" o "while" irá parar.

Espero que eu tenha ajudado, qualquer dúvida ou problema fico a disposição :)

Bons estudos!

Ajudou muito amigo, obrigado!!