2
respostas

[Dúvida] Duvida sobre "Else if" - (Desafio - Conta Bancaria)

Referente ao desafio da Conta Bancaria, assiti a primeira aula do desafio e tentei fazer da forma que eu sabia antes de ver a continuacao das explicacoes, porem a professora usa o "else if", acho q ainda n tinha abordado ele, entao eu tinha utilizado apenas "if" para cada opcao, e usei o else na opcao 3, mas n utilizei "else if". Queria entender melhor como funciona o else if, se eh a melhor forma de fazer e pq?

import java.util.Scanner;

public class ContaBanco {
    static void main(String[] args) {
        Scanner leitura = new Scanner(System.in);
        String nome = "felipe";
        String conta = "corrente";
        double saldoatual = 5000;
        double saldoinicial = saldoatual;
        int escolha = 0;
        double recebe = 0;
        double transfere = 0;

        System.out.printf("""
                **********************************
                
                Dados iniciais do cliente:
                
                Nome:          %s
                Tipo de conta: %s
                Saldo Inicial: R$%.2f
                
                **********************************
                """, nome, conta, saldoinicial);

        while (escolha != 4){
            System.out.printf("""
                    Operacoes:
                    
                    1- Consultar Saldos
                    2- Receber Valores
                    3- Transferir valor
                    4- Sair
                    
                    Digite a opcao desejada:
                    """);
            escolha = leitura.nextInt();
        if (escolha > 4 || escolha < 1){
            System.out.printf("Escolha invalida! %nEscolha uma das 4 opcoes! %n");
        }

        if (escolha == 1){
            System.out.printf("Seu saldo atual eh R$%.2f %n", saldoatual);
        }
        if (escolha == 2){
            System.out.println("Digite o valor que ira receber!:");
            recebe = leitura.nextDouble();
            saldoatual = saldoinicial + recebe;
            System.out.printf("Seu saldo atual agora eh de R$%.2f %n", saldoatual);
        }
        if (escolha == 3){
            System.out.println("Digite o valor que ira transferir!:");
            transfere = leitura.nextDouble();
            if (transfere <= saldoatual) {
                saldoatual = saldoatual - transfere;
                System.out.printf("Voce transferiu R$%.2f, seu saldo atual eh R$%.2f %n", transfere, saldoatual);
            }
            else
                System.out.printf("Saldo insuficiente, seu limite eh R$%.2f! %n", saldoatual);
            }
        if (escolha == 4){
            System.out.println("voce deslogou da sua conta!");
            break;
        }
        }
        leitura.close();
    }
}
2 respostas

Oii Felipe, tudo bem com você?

Poxa, muito legal que você tentou resolver o desafio sozinho antes de ver a solução! Esse é o melhor jeito de aprender, porque você força o seu cérebro a pensar na lógica antes de receber a resposta pronta.

Sobre a sua dúvida do else if, imagine que ele é um "filtro" mais inteligente.

Quando você usa vários if seguidos (como no seu código), o Java vai testar todas as condições, uma por uma, mesmo que já tenha encontrado a correta. Se o usuário digitar "1", o computador testa se é 1 (sim), depois testa se é 2 (não), depois se é 3 (não)... e assim por diante.

Já com o else if, o Java funciona de forma exclusiva: se ele encontrar a primeira condição verdadeira, ele pula todas as outras e vai direto para o final do bloco.

Por que o else if é melhor nesse caso?

Performance: O computador trabalha menos, pois para de testar assim que acha a opção certa.
Lógica: Ele evita comportamentos estranhos. Por exemplo, se você tivesse um else no final de um código só com ifs, ele poderia ser executado junto com um dos if anteriores se você não tomasse cuidado. Com o else if, o else final só acontece se nenhuma das opções acima for verdadeira.

Como ficaria no seu código:

if (escolha == 1) {
    // consulta saldo
} else if (escolha == 2) {
    // recebe valor
} else if (escolha == 3) {
    // transfere valor
} else if (escolha == 4) {
    // sai
} else {
    System.out.println("Opção inválida!");
}

Dessa forma, o seu código fica mais limpo e profissional! Ah, e uma dica extra: como você está trabalhando com um menu de opções fixas (1, 2, 3 ou 4), no futuro você vai conhecer o switch, que é ainda mais organizado para esse tipo de situação.

Parabéns pela dedicação, seu código está muito bem estruturado! Continue praticando.

Bons estudos!

Sucesso

Imagem da comunidade

Muito obrigado pela atenção, entendi perfeitamente agora. Obrigado também pela sugestão!