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

[Projeto] Conta Bancária

import java.util.Scanner;

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

    // Dados iniciais do cliente
    String nome = "Ana";
    String tipoConta = "Corrente";
    double saldo = 2500.0;

    // Exibe os dados do cliente
    System.out.println("Dados iniciais do cliente:");
    System.out.println("Nome: " + nome);
    System.out.println("Tipo conta: " + tipoConta);
    System.out.println("Saldo inicial: R$ " + saldo);
    System.out.println("***********************");

    // Menu de opções
    int opcao = 0;
    boolean opcaoValida = false;

    do {
        System.out.println("\nOperações:");
        System.out.println("1- Consultar saldos");
        System.out.println("2- Receber valor");
        System.out.println("3- Transferir valor");
        System.out.println("4- Sair");

        // Tratamento de exceção para a escolha da opção
        while (!opcaoValida) {
            System.out.print("Digite a opção desejada: ");
            String input = sc.nextLine();
            try {
                opcao = Integer.parseInt(input);
                if (opcao >= 1 && opcao <= 4) {
                    opcaoValida = true;
                } else {
                    System.out.println("Opção inválida. Escolha um número entre 1 e 4.");
                }
            } catch (NumberFormatException e) {
                System.out.println("Entrada inválida! Por favor, insira um número entre 1 e 4.");
            }
        }

        // Resetar a flag de validade para a próxima iteração
        opcaoValida = false;

        switch (opcao) {
            case 1:
                // Consultar saldo
                System.out.println("\nSeu saldo atual é: R$ " + saldo);
                break;

            case 2:
                // Receber valor
                double valorReceber = 0;
                System.out.print("\nInforme o valor a receber: R$ ");
                while (true) {
                    try {
                        String input = sc.nextLine();
                        input = input.replace(",", ".");
                        valorReceber = Double.parseDouble(input);
                        if (valorReceber <= 0) {
                            System.out.println("O valor a receber deve ser positivo.");
                        } else {
                            break;
                        }
                    } catch (NumberFormatException e) {
                        System.out.println("Entrada inválida! Por favor, insira um número válido.");
                    }
                }

                saldo += valorReceber;
                System.out.println("Depósito realizado. Seu saldo atualizado é: R$ " + saldo);
                break;

            case 3:
                // Transferir valor
                double valorTransferir = 0;
                System.out.print("\nInforme o valor que deseja transferir: R$ ");
                while (true) {
                    try {
                        String input = sc.nextLine();
                        input = input.replace(",", ".");
                        valorTransferir = Double.parseDouble(input);
                        if (valorTransferir <= 0) {
                            System.out.println("O valor da transferência deve ser positivo.");
                        } else if (valorTransferir > saldo) {
                            System.out.println("\nNão há saldo suficiente para fazer essa transferência.");
                        } else {
                            break;
                        }
                    } catch (NumberFormatException e) {
                        System.out.println("Entrada inválida! Por favor, insira um número válido.");
                    }
                }

                saldo -= valorTransferir;
                System.out.println("Transferência realizada com sucesso. Seu saldo atualizado é: R$ " + saldo);
                break;

            case 4:
                // Sair
                System.out.println("\nSaindo do sistema. Até logo!");
                break;

            default:
                // Opção inválida
                System.out.println("\nOpção inválida. Tente novamente.");
                break;
        }

    } while (opcao != 4);

    sc.close();
}

}

2 respostas
solução!

Oi, Sheila! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Você implementou um sistema bancário, o que é uma excelente prática para entender como gerenciar entradas do usuário e trabalhar com operações básicas.

💡 Uma dica interessante para o futuro é usar o método nextDouble() do Scanner, que já converte a entrada para tipo double de maneira mais direta, evitando a necessidade de substituições de caracteres e conversões extras. Veja um exemplo:


double valorReceber = 0;
System.out.print("\nInforme o valor a receber: R$ ");
while (true) {
    try {
        valorReceber = sc.nextDouble();
        if (valorReceber <= 0) {
            System.out.println("O valor a receber deve ser positivo.");
        } else {
            break;
        }
    } catch (Exception e) {
        System.out.println("Entrada inválida! Por favor, insira um número válido.");
        sc.nextLine(); // Limpa o buffer
    }
}

Abraços e bons estudos!

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

Olá! Obrigada Monalisa!