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");
}
}