import java.util.Scanner;
class Conta {
private String nome, numero;
private double saldo;
Conta(String nome, String numero, double saldo) { this.nome = nome; this.numero = numero; this.saldo = saldo; }
String getNome() { return nome; }
String getNumero() { return numero; }
double getSaldo() { return saldo; }
boolean sacar(double v) { if (v<=0 || v>saldo) return false; saldo -= v; return true; }
boolean depositar(double v) { if (v<=0) return false; saldo += v; return true; }
boolean transferirPara(Conta dest, double v) { if (dest==null || v<=0 || v>saldo) return false; saldo -= v; dest.saldo += v; return true; }
String resumo() { return String.format("Cliente: %s | Conta: %s | Saldo: R$ %.2f", nome, numero, saldo); }
}
public class BancoSimples {
static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("=== Inicialização do cliente ===");
System.out.print("Nome: ");
String nome = sc.nextLine().trim(); if (nome.isEmpty()) nome = "Cliente Teste";
System.out.print("Número da conta: ");
String num = sc.nextLine().trim(); if (num.isEmpty()) num = "0001-0";
double saldo = lerDouble("Saldo inicial: ", 0.0);
Conta minha = new Conta(nome, num, saldo);
Conta exemplo = new Conta("Maria Exemplo", "0002-0", 500.00);
while (true) {
mostraMenu();
int op = lerInt("Escolha: ");
switch (op) {
case 1:
System.out.println("--- Visualizar saldo ---");
System.out.println(minha.resumo());
break;
case 2:
System.out.println("--- Enviar valor ---");
System.out.println("Destino: " + exemplo.getNumero() + " - " + exemplo.getNome());
double vEnv = lerDouble("Valor a enviar: ", 0.0);
if (minha.transferirPara(exemplo, vEnv)) System.out.println("Transferência OK. Novo saldo: R$ " + String.format("%.2f", minha.getSaldo()));
else System.out.println("Falha: verifique valor e saldo.");
break;
case 3:
System.out.println("--- Receber valor ---");
double vRec = lerDouble("Valor a receber: ", 0.0);
if (minha.depositar(vRec)) System.out.println("Depósito OK. Novo saldo: R$ " + String.format("%.2f", minha.getSaldo()));
else System.out.println("Falha: informe valor positivo.");
break;
case 4:
System.out.println("--- Sacar ---");
double vSac = lerDouble("Valor a sacar: ", 0.0);
if (minha.sacar(vSac)) System.out.println("Saque OK. Novo saldo: R$ " + String.format("%.2f", minha.getSaldo()));
else System.out.println("Falha: saldo insuficiente ou valor inválido.");
break;
case 5:
System.out.println("--- Resumos ---");
System.out.println(minha.resumo());
System.out.println(exemplo.resumo());
break;
case 0:
System.out.println("Obrigado por usar o Banco Simples.");
System.out.println("Saindo..."); sc.close(); return;
default:
System.out.println("Opção inválida.");
}
System.out.println();
}
}
static void mostraMenu() {
System.out.println("=== Menu ===");
System.out.println("1 - Visualizar saldo");
System.out.println("2 - Enviar valor (transferência)");
System.out.println("3 - Receber valor (depósito)");
System.out.println("4 - Sacar");
System.out.println("5 - Mostrar resumo das contas");
System.out.println("0 - Sair");
}
static int lerInt(String p) {
while (true) {
System.out.print(p);
try { return Integer.parseInt(sc.nextLine().trim()); }
catch (Exception e) { System.out.println("Digite um inteiro válido."); }
}
}
static double lerDouble(String p, double min) {
while (true) {
System.out.print(p);
try {
double v = Double.parseDouble(sc.nextLine().trim().replace(',', '.'));
if (v < min) { System.out.println("Informe valor >= " + min); continue; }
return v;
} catch (Exception e) { System.out.println("Digite um número válido."); }
}
}
}