Olá, Enio, tudo bem?
Seu código está bem estruturado, só notei alguns pontos que podem ser ajustados para garantir que ele funcione corretamente:
Os métodos Sacar
e Transferir
estão verificando se o valor é menor que o saldo para exibir a mensagem de saldo insuficiente. O correto seria verificar se o valor é maior que o saldo.
É uma boa prática fechar o Scanner
após o uso para evitar vazamentos de recursos.
Código ajustado:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Cliente cliente = new Cliente("Enio Reis", "Corrente", 2500);
System.out.println("""
********************************************************
Dados inicias do cliente:
""");
System.out.printf("Nome: %s\n", cliente.getNomeCliente());
System.out.printf("Tipo de conta: %s\n", cliente.getTipoConta());
System.out.printf("Saldo inicial: R$ %.2f\n", cliente.getSaldo());
System.out.println("""
********************************************************
""");
boolean validador = true;
while (validador) {
System.out.println("""
Operações:
1 - Consultar saldos
2 - Receber valor
3 - Transferir valor
4 - Sacar valor
5 - Sair
Digite a opção desejada:
""");
System.out.println("""
********************************************************
""");
int opcao = sc.nextInt();
if (opcao == 5) {
System.out.println("Thau!");
validador = false;
} else {
cliente.getMenu(opcao);
}
}
sc.close();
}
}
// CLASSE PARA CRIAÇÃO DO CLIENTE
import java.util.Scanner;
public class Cliente {
Scanner sc = new Scanner(System.in);
private String nomeCliente;
private String tipoConta;
private double saldo;
public Cliente() {}
public Cliente(String nomeCliente, String tipoConta, double saldoInicial) {
this.nomeCliente = nomeCliente;
this.tipoConta = tipoConta;
this.saldo = saldoInicial;
}
public String getNomeCliente() {
return nomeCliente;
}
public String getTipoConta() {
return tipoConta;
}
public double getSaldo() {
return saldo;
}
public void Depositar(double saldoInicial) {
this.saldo += saldoInicial;
}
public void Sacar(double valor) {
if (valor > this.saldo) {
System.out.println("Saldo insuficiente!");
} else {
this.saldo -= valor;
}
}
public void Transferir(double valor) {
if (valor > this.saldo) {
System.out.println("Saldo insuficiente!");
} else {
this.saldo -= valor;
}
}
public void getMenu(int opcao) {
switch (opcao) {
case 1:
System.out.print("Seu saldo: ");
System.out.printf("R$ %.2f \n", this.getSaldo());
break;
case 2:
System.out.println("Digite o valor: ");
this.Depositar(sc.nextDouble());
System.out.printf("Saldo atual: R$ %.2f \n", this.getSaldo());
break;
case 3:
System.out.println("Digite o valor a transferir: ");
this.Transferir(sc.nextDouble());
System.out.printf("Valor transferido. Saldo atual: R$ %.2f \n", this.getSaldo());
break;
case 4:
System.out.println("Digite o valor a sacar: ");
this.Sacar(sc.nextDouble());
System.out.printf("Valor sacado. Saldo atual: R$ %.2f \n", this.getSaldo());
break;
default:
System.out.println("Opção Inválida!");
break;
}
}
}
Ajustando esses pontos ele vai funcionar certinho. Parabéns pelo progresso!
Espero ter ajudado. Bons estudos.