Para este desafio final, quis me desafiar um pouco, então me propus a criar um código um pouco mais elaborado que os que vinha fazendo antes, criando class próprios para cada tipo de entidade dos negócios. Também apliquei tratamento com try catch para evitar errors desnecessários por poderiam ser gerando por um input de tipos diferentes da class Scanner gerando um InputMismatchException e assim fazendo o programa fechar. O resultado final do desafio foi este:
Class main:
/**
* Main class that simulates a bank account.
* Allows the user to perform operations such as balance inquiry, deposit, and withdrawal.
*
* @author rickmviana
*/
public class BankAccount {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
People people = new People();
System.out.println("Qual o seu nome?");
String name = input.nextLine();
people.setName(name);
System.out.println("Qual o seu saldo?");
double saldo = 0.0;
boolean verify = false;
while (!verify) {
try {
saldo = input.nextDouble();
verify = true;
} catch (InputMismatchException e) {
System.out.println(Messages.invalidInput());
input.next(); // Clear scanner buffer
}
}
people.deposit(saldo);
int option;
do {
System.out.println(Messages.text());
try {
option = input.nextInt();
switch (option) {
case 1:
System.out.println(people);
break;
case 2:
System.out.println("Informe o valor a receber: ");
double balance = input.nextDouble();
checkDeposit(people, balance);
break;
case 3:
System.out.println("Informa o valor da transferencia: ");
double balance2 = input.nextDouble();
withdraw(people, balance2);
break;
case 4:
System.out.println("Saindo...");
break;
default:
System.out.println("Escolha uma entrada valida!");
}
} catch (InputMismatchException e) {
System.out.println(Messages.invalidInput());
input.next(); // Clear scanner buffer
option = 0;
}
} while (option != 4);
input.close();
}
/**
* Performs a withdrawal from the user's account, checking if there is enough balance.
* @param people People object (user).
* @param balance Amount to withdraw.
*/
private static void withdraw(People people, double balance) {
if (balance > people.getBalance() || balance <= 0) {
System.out.println(Messages.insufficientBalance());
} else {
people.withdrawal(balance);
System.out.println(people.getBalanceString());
}
}
/**
* Performs a deposit into the user's account.
* @param people People object (user).
* @param balance Amount to deposit.
*/
private static void checkDeposit(People people, double balance) {
if (balance < 0) {
System.out.println(Messages.value());
} else {
people.deposit(balance);
System.out.println(people.getBalanceString());
}
}
}
o resto tenho de enviar por imagem, pôs ultrapassa o limite de linhas aqui da postagem.
Interface Counter
Class Messages
Class People