1
resposta

Fiz o Desafio por Switch/case,porem surgiu uma duvida.

Fiz o desafio dessa forma:

import java.util.Scanner;

public class Desafio { public static void main(String[] args) {

    String nome = "Ana Flavia Joanes";
    String tipoConta = "Corrente";
    double saldo = 10500;
    int opcao = 0;
    double valor = 0;
    String contaTranferencia = "3278";


    System.out.println("***********************************************");

    System.out.println("Nome do cliente: " + nome);
    System.out.println("Tipo de Conta: " + tipoConta);
    System.out.println("Saldo da conta: R$ " + saldo);
    System.out.println("***********************************************");

    Scanner leitor = new Scanner(System.in);
    String menu = """
            *** Digite a opção desejada:
            1- Consultar Saldo
            2- Transferi
            3-Depositar
            4-Sacar
            5-Sair
                            
            """;

    while (opcao != 5) {
        System.out.println(menu);
        opcao = leitor.nextInt();

        switch (opcao) {
            case 1:
                System.out.println("Saldo: R$" + saldo);
                System.out.println("***********************************************");
                break;
            case 2:
                System.out.println("Conta que recebera a transferência: " + contaTranferencia);
                System.out.println("Valor da transferência: ");
                valor = leitor.nextDouble();

                if ( saldo<valor) {
                    System.out.println("Saldo insuficiente!");
                    System.out.println("***********************************************");
                } else {
                    System.out.println("Transferência realizada com sucesso!\n Saldo atualizado: R$ " + (saldo -=valor));
                    System.out.println("***********************************************");
                    break;
                }
                case 3:
                System.out.println("Valor do Deposito: ");
                valor = leitor.nextDouble();
                if (valor < 1) {
                    System.out.println("Valor minimo  para deposito: R$ 1!");
                    System.out.println("***********************************************");

                } else {
                    System.out.println("Deposito realizado com sucesso!\n Saldo atualizado: R$ " + (saldo +=valor));
                    System.out.println("***********************************************");
                    break;
                }
                case 4:
                System.out.println("Valor de saque: ");
                valor = leitor.nextDouble();

                if ( saldo<valor) {
                    System.out.println("Saldo insuficiente!");
                    System.out.println("***********************************************");
                } else {
                    System.out.println("Saque realizado com sucesso!\n Saldo atualizado: R$ " + (saldo -=valor));
                    System.out.println("***********************************************");
                    break;
                }

        }
    }
}

}

Porém quando cai nas opções que o saldo para deposito, transferência e saque são insuficientes, é informado a negativa e vai para o caso seguinte.Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Consegui resolver adicionando o comando break entre as condiconais if e else,porem gostaria de saber por que sem ele a logica não funcionou.

1 resposta

Olá, Flavia.

Tudo bem?

Quando você não inclui o comando break após as condições if e else em cada caso dentro do bloco switch, o programa continua executando o código dos casos subsequentes até encontrar um break ou até terminar o bloco switch.

No seu código original, quando a condição de saldo insuficiente é encontrada em uma das opções (transferência, depósito ou saque), o programa exibe a mensagem de saldo insuficiente e executa o código do caso seguinte dentro do bloco switch. Isso acontece porque o break não está presente para sair do bloco switch após a verificação da condição if ou else.

Ao adicionar o break dentro dos blocos if e else, você garante que, após a verificação da condição e exibição da mensagem de saldo insuficiente, o programa sairá do bloco switch, interrompendo a execução dos casos subsequentes. Isso evita que o código continue executando as ações de transferência, depósito ou saque, já que o saldo é insuficiente.

Portanto, o break é essencial para controlar o fluxo de execução dentro do bloco switch e garantir que apenas o caso desejado seja executado.

Muito bom! Parabéns por conseguir resolver.

Espero ter ajudado. Qualquer dúvida manda aqui. Bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software