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

[Projeto] [Resultado] Desafio Final: Conta bancária

OBS: Neste projeto decidi fazer com OO, utilizando um pouco de clean code para deixar o código mais limpo e entendível. Espero que gostem. =)

import java.util.InputMismatchException;
import java.util.Scanner;

public class BankStatement {
    private static final String topDivider = "*******************************\n";
    private static final String bottomDivider = "*******************************\n\n";

    public static void main(String[] args) {
        Scanner readOperation = new Scanner(System.in);
        BankingOperation bankingOperation = new BankingOperation();
        Client client = new Client();
        client.initialCustomerData();
        int operationType = 4;
        do {
            try {
                System.out.println("Operações \n" +
                        "1- Consultar saldos \n" +
                        "2- Receber valor \n" +
                        "3- Transferir valor \n" +
                        "4- Sair \n\n"
                );
                System.out.print("Digite uma opção desejada: ");
                operationType = readOperation.nextInt();

                switch (operationType) {
                    case 1:
                        System.out.print(topDivider);
                        System.out.printf("\nSeu saldo atual é de R$ %.2f\n", client.getBalance());
                        System.out.print(bottomDivider);
                        break;
                    case 2:
                        System.out.print(topDivider);
                        System.out.print("Informe o valor a receber: ");
                        Double newBalance = readOperation.nextDouble();
                        System.out.printf(bankingOperation.calcAmountValue(newBalance, client));
                        System.out.print(bottomDivider);
                        break;
                    case 3:
                        System.out.print(topDivider);
                        System.out.print("Informe o valor que deseja transferir: ");
                        Double transferMoney = readOperation.nextDouble();
                        System.out.printf(bankingOperation.calcTransferMoney(transferMoney, client));
                        System.out.print(bottomDivider);
                        break;
                    case 4:
                        System.out.println("sair");
                        readOperation.close();
                        break;
                    default:
                        System.out.print(topDivider);
                        System.out.println("Opção inválida");
                        System.out.print(bottomDivider);
                        break;
                }
            } catch (InputMismatchException e) {
                System.out.println("Você digitou um valor inválido, digite apenas apenas números !!");
            }
        } while (operationType != 4);
        readOperation.close();
    }
}
public class BankingOperation {
    public String calcAmountValue(Double newBalance, Client client) {
        client.setBalance(client.getBalance() + newBalance);
        return String.format("\nSaldo atualizado em R$ %.2f\n", client.getBalance());
    }

    public String calcTransferMoney(Double transferMoney, Client client) {
        if (transferMoney <= client.getBalance() && transferMoney != 0) {
            client.setBalance(client.getBalance() - transferMoney);
            return String.format("Saldo atualizado R$%.2f\n", client.getBalance());
        } else {
            return "Não há saldo suficiente para fazer essa transferência.\n";
        }
    }
}
import java.text.DecimalFormat;

public class Client {

    private String username;
    private String accountType;
    private Double balance;

    public String getUsername() {
        return username;
    }

    public String getAccountType() {
        return accountType;
    }

    public Double getBalance() {
        return balance;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public void setAccountType(String accountType) {
        this.accountType = accountType;
    }

    public void setBalance(Double balance) {
        this.balance = balance;
    }

    public void initialCustomerData() {
        this.setUsername("Rodrigo Andare Filho");
        this.setAccountType("Corrente");
        this.setBalance(2500.00);

        System.out.print("*********************** \n\n" +
                           "Dados iniciais do cliente: \n\n" +
                           "Nome: " + this.getUsername() + "\n" +
                           "Tipo conta: " + this.getAccountType() + "\n" +
                           "Saldo inicial: R$" + new DecimalFormat("#, ##0.00").format(this.getBalance()) + "\n" +
                           "***********************\n\n");
    }
}
1 resposta
solução!

Olá Rodrigo, tudo bem?

Parabéns pelo seu projeto! É muito legal ver que você utilizou conceitos de Orientação a Objetos e Clean Code para deixar o código mais organizado e fácil de entender.

Uma sugestão seria utilizar exceções específicas para cada tipo de erro que possa ocorrer no código, em vez de utilizar a exceção genérica InputMismatchException para todos os casos.

No mais, parabéns pelo projeto e continue estudando e praticando! Espero ter ajudado e bons estudos!