import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Cliente cliente1 = new Cliente("Diego Miguel Chagas", "Conta Corrente", 10000.00);
int opcao = 0;
while (opcao != 4) {
System.out.println("""
OPERAÇÕES:
1 - Consultar Saldos
2 - Depósito
3 - Saque
4 - Sair
Digite a opção desejada: """);
Scanner opcaoTeclado = new Scanner(System.in);
while (!opcaoTeclado.hasNextInt()) {
System.out.println("Opção inválida. Deve ser digitado um número entre 1 e 4. Tente novamente: ");
System.out.println("""
OPERAÇÕES:
1 - Consultar Saldos
2 - Depósito
3 - Saque
4 - Sair
Digite a opção desejada: """);
opcaoTeclado = new Scanner(System.in);
}
opcao = opcaoTeclado.nextInt();
switch(opcao) {
case 1:
System.out.println(cliente1.getExtrato());
break;
case 2:
System.out.print("Digite a quantia a ser depositada: ");
Scanner valDeposito = new Scanner(System.in);
if (valDeposito.hasNextDouble()) {
double deposito = valDeposito.nextDouble();
cliente1.setDepositaValor(deposito);
break;
} else {
System.out.println("Valor digitado inválido. Repita a operação.");
break;
}
case 3:
System.out.println("Digite a quantia a ser sacada: ");
Scanner valSaque = new Scanner(System.in);
if (valSaque.hasNextDouble()) {
double saque = valSaque.nextDouble();
cliente1.setSaqueValor(saque);
break;
} else {
System.out.println("Valor digitado inválido. Repita a operação.");
break;
}
case 4:
break;
default:
System.out.println("Opção inválida. Deve ser digitado um número entre 1 e 4. Tente novamente: ");
break;
}
}
}
}
public class Cliente {
private String nome;
private String tipoDeConta;
private double saldoInicial;
public Cliente (String nome, String tipoDeConta, double saldoInicial) {
this.nome = nome;
this.tipoDeConta = tipoDeConta;
this.saldoInicial = saldoInicial;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getTipoDeConta() {
return tipoDeConta;
}
public void setTipoDeConta(String tipoDeConta) {
this.tipoDeConta = tipoDeConta;
}
public double getSaldoInicial() {
return saldoInicial;
}
public void setSaldoInicial(double saldoInicial) {
this.saldoInicial = saldoInicial;
}
public void setDepositaValor (double deposito) {
saldoInicial += deposito;
System.out.println(getExtrato());
}
public void setSaqueValor (double saque) {
if (saldoInicial - saque >= 0) {
saldoInicial -= saque;
System.out.println(getExtrato());
} else {
System.out.println("Saldo insuficiente para o saque.");
System.out.println(getExtrato());
}
}
public String getExtrato () {
return String.format("O saldo atualizado em %s é R$%.2f.\n========================\n", tipoDeConta, saldoInicial);
}
@Override
public String toString() {
return """
**************************
DADOS INICIAIS DO CLIENTE:
=========================
NOME: %s.
TIPO DE CONTA: %s.
SALDO INICIAL: R$%.2f.
""".formatted(nome, tipoDeConta, saldoInicial);
}
}
Observação: Como já tenho um pouco de conhecimentos de classes e métodos, resolvi o problema juntando os conhecimentos adquiridos neste curso, com os que já possuía sobre estes temas, desenvolvendo a aplicação conforme acima.
Acredito que não restaram situações que dessem margem ao usuário para cometer erros que quebrassem a aplicação na execução.