3
respostas

Desafio Conta Bancária

import java.util.Scanner;

public class DesafioContaBancaria {

    static String nome;
    static String tipoConta;
    static double saldo;

    public static void main(String[] args) {
        nome = "Porky Pig";
        tipoConta = "Corrente";
        saldo = 0.00;
        menu();
    }

    public static void menu() {
        int opcao = 0;

        System.out.println("***********************");
        System.out.println("Bem vindo ao banco Looney Tunes!");
        System.out.println("\nNome do cliente: " + nome);
        System.out.println("Tipo conta: " + tipoConta);
        System.out.println("Saldo atual: " + saldo);
        System.out.println("\n***********************");

        String menu = """
                ** Digite sua opção **
                1 - Consultar saldo
                2 - Transferir valor
                3 - Receber valor 
                4 - Sair
                
                """;
        Scanner leitura = new Scanner(System.in);

        while (opcao != 4) {
            System.out.println(menu);
            opcao = leitura.nextInt();

            switch(opcao) {
                case 1:
                    consultarSaldo();
                    break;
                case 2:
                    transferirValor();
                    break;
                case 3:
                    receberValor();
                    break;
                case 4:
                    sairDoSistema();
                    break;
                default:
                    System.out.println("Opção inválida!");
            }
        }
    }

    public static void consultarSaldo() {
        System.out.println("O saldo atualizado é " + saldo);
    }

    public static void transferirValor() {
        Scanner leitura = new Scanner(System.in);

        System.out.println("Qual o valor que deseja transferir?");
        double valor = leitura.nextDouble();
        if (valor > saldo) {
            System.out.println("Não há saldo para realizar a transferência.");
        } else {
            saldo -= valor;
            System.out.println("Novo saldo: " + saldo);
        }
    }

    public static void receberValor() {
        Scanner leitura = new Scanner(System.in);

        System.out.println("Valor recebido: ");
        double valor = leitura.nextDouble();
        saldo += valor;
        System.out.println("Novo saldo: " + saldo);
    }

    public static void sairDoSistema() {
        System.out.println("That's All Folks!");
    }
}
3 respostas

Olá Charles! Tudo bem?

O seu código está bem estruturado e já cobre as funcionalidades básicas de consultar saldo, transferir e receber valores. Vou te dar algumas dicas que podem te ajudar a melhorar e expandir ainda mais esse projeto.

  1. Encerramento do Scanner: No seu código, você está criando um novo Scanner a cada método que precisa de entrada do usuário. Isso pode ser otimizado criando um único Scanner no início do programa e fechando-o no final, assim você evita possíveis problemas de recursos não liberados.

    public static void main(String[] args) {
        Scanner leitura = new Scanner(System.in);
        // seu código
        leitura.close();
    }
    
  2. Validação de entrada: Você pode adicionar uma validação para garantir que o usuário digite apenas números válidos quando for transferir ou receber valores. Isso ajuda a evitar exceções e mantém o programa mais robusto.

Espero que essas dicas te ajudem a continuar desenvolvendo sua aplicação de forma ainda mais eficiente.

Bons estudos e continue se divertindo com o Java!

Ok, vou prestar atenção nisso a partir de agora, mas o Java não libera automaticamente a memória das variáveis locais, mesmo que essas sejam objetos, após a execução da função ?

Opa, Charles!

Sim, o Java já liberar automaticamente a memória das variáveis, mais isso ocorre ao finalizar a execução de um código, durante a execução manter esse Scanner ativo pode ser prejudicial ao desempenho, mas em uma ambiente de grande porte.