Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Minha resolução

import java.util.Scanner;

public class ContaBancaria {
public static void main(String[] args) {
Scanner leitor = new Scanner(System.in);

    String nome = "Cesar L. Moreira";
    String tipoConta = "Corrente";
    double saldo = 2500;

    System.out.println("**************************************");
    System.out.println("Dados iniciais do cliente: ");
    System.out.println("\nNome:               " + nome);
    System.out.println("Tipo conta:         " + tipoConta);
    System.out.println("Saldo inicial:   R$ " + saldo);
    System.out.println("\n**************************************");

    int tipoOperacao = 0;

    do {
        System.out.println("""
                    
                    Operações
                
                1 - Consulta saldos
                2 - Receber valor
                3 - Transferir valor
                4 - Sair
                
                Digite a operação desejada: """);

        tipoOperacao = leitor.nextInt();

        if(tipoOperacao == 1) {
            System.out.println("Saldo atual: R$ " + String.format("%.2f", saldo));
        } else if (tipoOperacao == 2) {
            System.out.println("Informe o valor a receber: R$ ");
            double deposito = leitor.nextDouble();
            if(deposito >= 0) {
                saldo += deposito;
                System.out.println("Saldo atual: R$ " + String.format("%.2f", saldo));
            } else {
                System.out.println("Não é possível fazer deposito com valor negativo!");
            }
            System.out.println("Novo saldo: R$ " + String.format("%.2f", saldo));
        } else if (tipoOperacao == 3) {
            System.out.println("Saldo atual: R$ " + String.format("%.2f", saldo));
            System.out.println("Informe o valor a transferir: R$ ");
            double transferencia = leitor.nextDouble();
            if(saldo >= transferencia) {
                saldo -= transferencia;
                System.out.println("Transferencia realizada!");
                System.out.println("Novo saldo: R$ " + String.format("%.2f", saldo));
            } else {
                System.out.println("Saldo insuficiente!");
            }
        } else if(tipoOperacao == 4) {
            System.out.println("Encerrando aplicativo!");
        } else if (tipoOperacao < 1 || tipoOperacao > 4 ) {
            System.out.println("Opção inválida");
        }
    } while (tipoOperacao != 4);
}

}

1 resposta

Olá, Cesar! Como vai?

Primeiramente, seja bem-vindo à Alura!

Vi que você explorou a classe Scanner para capturar entradas com Java, utilizou muito bem a estrutura de repetição com do...while para manter o menu ativo e ainda compreendeu a importância da condicional para validar operações bancárias como depósitos e transferências.

Uma dica interessante para o futuro é separar as operações em métodos, deixando o código mais modular e organizado. Assim:

private static void consultarSaldo(double saldo) {
    System.out.println("Saldo atual: R$ " + String.format("%.2f", saldo));
}

private static double receberValor(double saldo, Scanner leitor) {
    System.out.print("Informe o valor a receber: R$ ");
    double deposito = leitor.nextDouble();
    if (deposito >= 0) {
        saldo += deposito;
        System.out.println("Depósito realizado! Novo saldo: R$ " + String.format("%.2f", saldo));
    } else {
        System.out.println("Não é possível depositar valor negativo!");
    }
    return saldo;
}

Isso faz com que cada operação fique isolada, facilitando manutenção e testes.

Se quiser aprofundar ainda mais, algumas boas práticas são:

  • Encapsular saldo em uma classe Conta: para evitar manipulação direta da variável.
  • Tratar exceções: garantir que entradas inválidas não quebrem o programa.
  • Mensagens claras: dar feedback ao usuário em cada operação.

Ah, uma pergunta: você acha que separar cada operação em métodos deixa o código mais organizado e fácil de manter ou prefere manter tudo centralizado no main para simplificar?

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!