Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Desafio - Conta Bancária Virtual (Melhorias)

Apliquei algumas melhorias no código enviado anteriormente no fórum (https://cursos.alura.com.br/forum/topico-projeto-desafio-conta-bancaria-virtual-539844).

  • Declaração e instância do Scanner fora do loop while;

  • Substituição do bloco if para default;

if (operacaoEscolhida > 4) { // Checagem fora do switch
        System.out.println("Opção Invalida.");
    }
default:
    System.out.println("Opção Invalida.");
    break;
  • Fechamento do Scanner com "leitura.close();"

Código refatorado:

import java.util.Scanner;

public class ContaBancaria {

    public static void main(String[] args) {

        String dadosCliente = "Aline Miho Watanabe";
        String tipoConta = "Corrente";
        double saldoInicial = 5000.00;


        String extrato = """
                ----------------------------
                Dados iniciais do cliente:
                
                Nome: %s
                Tipo de Conta: %s
                Saldo Inicial: %.2f
                ----------------------------
                """.formatted(dadosCliente, tipoConta, saldoInicial);

        System.out.println(extrato);

        String escolherOperacao = """
                Operações:
                
                1- Consultar saldos
                2- Receber valor
                3- Transferir valor
                4- Sair
                """;

        System.out.println(escolherOperacao);

        int operacaoEscolhida = 0;
        double saldoAtual = saldoInicial;
        Scanner leitura = new Scanner(System.in);

        while (operacaoEscolhida != 4) {

            System.out.println("Escolha a operação desejada: ");
            operacaoEscolhida = leitura.nextInt();

            switch (operacaoEscolhida) {
                case 1:
                    System.out.println("Saldo: R$%.2f".formatted(saldoAtual));
                    break;
                case 2:
                    System.out.println("Insira o valor a ser recebido: ");
                    double valorRecebido = leitura.nextDouble();
                    saldoAtual += valorRecebido;
                    System.out.println("Operação realizada. Saldo: R$%.2f".formatted(saldoAtual));
                    break;
                case 3:
                    System.out.println("Insira o valor a ser transferido: ");
                    double valorTransferido = leitura.nextDouble();
                        if (saldoAtual >= valorTransferido) {
                            saldoAtual -= valorTransferido;
                            System.out.println("Operação realizada. Saldo: R$%.2f".formatted(saldoAtual));
                        } else {
                            System.out.println("Não foi possível completar a operação: saldo insuficiente");
                        }
                    break;
                case 4:
                    System.out.println("Encerrado.");
                    break;

                default:
                    System.out.println("Opção Invalida.");
                    break;
            }
        }
        leitura.close();
    }
}
1 resposta
solução!

Oi, Aline! Como vai?

Agradeço por compartilhar.

Gostei das melhorias no seu código, principalmente pela organização do Scanner fora do loop e pela verificação antecipada da operação inválida. Isso deixa o programa mais limpo e evita possíveis problemas de recurso.

Continue aprimorando suas soluções, testando diferentes formas de validar entradas e simplificar estruturas condicionais.

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