import java.util.Scanner ;
class Main {
static private Conta minhaConta;
static private Scanner entrada
= new Scanner
( System .
in ) ; public static void main
( String [ ] args
) { int opcao = - 1 ;
do {
System .
out .
println ( "\t Escolha a opção desejada" ) ; if ( minhaConta != null ) {
System .
out .
println ( "1 - Consultar Saldo" ) ; System .
out .
println ( "2 - Sacar" ) ; System .
out .
println ( "3 - Depositar" ) ; }
System .
out .
println ( "4 - Abrir Conta" ) ; System .
out .
println ( "0 - Sair\n " ) ; opcao = lerInt( ) ;
if ( minhaConta == null && opcao != 0 ) opcao = 4 ;
switch ( opcao) {
case 1 :
System .
out .
println ( "Nome: " + minhaConta.
getNome ( ) ) ; System .
out .
println ( "Número da conta: " + minhaConta.
getConta ( ) ) ; System .
out .
printf ( "Saldo atual: %.2f\n " , minhaConta.
getSaldo ( ) ) ; System .
out .
println ( "Saques realizados: " + minhaConta.
getSaques ( ) + "\n " ) ; break ;
case 2 :
if ( minhaConta.podeSacar ( ) ) {
System .
out .
print ( "Quanto deseja sacar: " ) ; int ok = minhaConta.sacar ( lerInt( ) ) ;
if ( ok >= 0 ) {
System .
out .
println ( "Sacado: " + ok
) ; System .
out .
println ( "Novo saldo: " + minhaConta.
getSaldo ( ) + "\n " ) ; } else if ( ok
== - 1 ) System .
out .
println ( "Não pode ser negativo\n " ) ; else if ( ok
== - 2 ) System .
out .
println ( "Saldo insuficiente. Faça um depósito\n " ) ; else if ( ok
== - 3 ) System .
out .
println ( "Limite de saques atingidos.\n " ) ; } else System .
out .
println ( "Limite de saques atingidos.\n " ) ; break ;
case 3 :
System .
out .
print ( "Quanto deseja depositar: " ) ; int ok = minhaConta.depositar ( lerInt( ) ) ;
if ( ok >= 0 ) {
System .
out .
println ( "Depositado: " + ok
) ; System .
out .
println ( "Novo saldo: " + minhaConta.
getSaldo ( ) + "\n " ) ; } else System .
out .
print ( "Não pode ser negativo" ) ; break ;
case 4 :
System .
out .
println ( "Cadastrando novo cliente." ) ; System .
out .
print ( "Ente com seu nome: " ) ; System .
out .
print ( "Entre com o valor inicial depositado na conta: " ) ; minhaConta = new Conta( entrada.nextLine ( ) , lerInt( ) ) ;
break ;
case 0 : break ;
default :
System .
out .
println ( "Opção inválida" ) ; }
} while ( opcao != 0 ) ;
}
private static int lerInt( ) {
while ( true ) {
String lido
= entrada.
nextLine ( ) .
trim ( ) ; try {
System .
out .
println ( "Desculpe, mas " + lido
+ " não é um número inteiro. Tente novamente." ) ; }
}
}
}
class Conta {
static private int ultimaConta;
private int conta, saques;
private double saldo;
public String getNome
( ) { return nome
; } public double getConta( ) { return conta; }
public double getSaldo( ) { return saldo; }
public int getSaques( ) { return saques; }
public boolean podeSacar( ) { return saques < 3 ; }
public Conta
( String nome,
int saldoInicial
) { this .nome = nome;
conta = ++ ultimaConta;
saldo = saldoInicial < 0 ? 0 : saldoInicial;
}
public int sacar( int valor) {
if ( valor < 1 ) return - 1 ;
if ( saldo < valor) return - 2 ;
if ( ! podeSacar( ) ) return - 3 ;
saldo -= valor;
saques++;
return valor;
}
public int depositar( int valor) {
if ( valor < 1 ) return - 1 ;
saldo += valor;
return valor;
}
}
//https://pt.stackoverflow.com/q/262849/101
aW1wb3J0IGphdmEudXRpbC5TY2FubmVyOwoKY2xhc3MgTWFpbiB7CiAgIAlzdGF0aWMgcHJpdmF0ZSBDb250YSBtaW5oYUNvbnRhOwogICAgc3RhdGljIHByaXZhdGUgU2Nhbm5lciBlbnRyYWRhID0gbmV3IFNjYW5uZXIoU3lzdGVtLmluKTsKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKICAgICAgICBpbnQgb3BjYW8gPSAtMTsKICAgICAgICBkbyB7CgkgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiXHQgRXNjb2xoYSBhIG9ww6fDo28gZGVzZWphZGEiKTsKCSAgICAgICAgaWYgKG1pbmhhQ29udGEgIT0gbnVsbCkgewoJCSAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIxIC0gQ29uc3VsdGFyIFNhbGRvIik7CgkJICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIjIgLSBTYWNhciIpOwoJCSAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIzIC0gRGVwb3NpdGFyIik7CgkgICAgICAgIH0KCSAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCI0IC0gQWJyaXIgQ29udGEiKTsKCSAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIwIC0gU2FpclxuIik7CgkgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIk9ww6fDo286ICIpOwogICAgICAgICAgICBvcGNhbyA9IGxlckludCgpOwogICAgICAgICAgICBpZiAobWluaGFDb250YSA9PSBudWxsICYmIG9wY2FvICE9IDApIG9wY2FvID0gNDsKCSAgICAgICAgc3dpdGNoIChvcGNhbykgewogICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlNBTERPIik7CgkJICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk5vbWU6ICIgKyBtaW5oYUNvbnRhLmdldE5vbWUoKSk7CgkJICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk7Dum1lcm8gZGEgY29udGE6ICIgKyBtaW5oYUNvbnRhLmdldENvbnRhKCkpOwoJCSAgICAgICAgU3lzdGVtLm91dC5wcmludGYoIlNhbGRvIGF0dWFsOiAlLjJmXG4iLCBtaW5oYUNvbnRhLmdldFNhbGRvKCkpOwoJCSAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJTYXF1ZXMgcmVhbGl6YWRvczogIiArIG1pbmhhQ29udGEuZ2V0U2FxdWVzKCkgKyAiXG4iKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICBpZiAobWluaGFDb250YS5wb2RlU2FjYXIoKSkgewogICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIlF1YW50byBkZXNlamEgc2FjYXI6ICIpOwogICAgICAgICAgICAgICAgICAgIGludCBvayA9IG1pbmhhQ29udGEuc2FjYXIobGVySW50KCkpOwogICAgICAgICAgICAgICAgICAgIGlmIChvayA+PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiU2FjYWRvOiAiICsgb2spOwoJCQkJICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk5vdm8gc2FsZG86ICIgKyBtaW5oYUNvbnRhLmdldFNhbGRvKCkgKyAiXG4iKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9rID09IC0xKSBTeXN0ZW0ub3V0LnByaW50bG4oIk7Do28gcG9kZSBzZXIgbmVnYXRpdm9cbiIpOwogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9rID09IC0yKSBTeXN0ZW0ub3V0LnByaW50bG4oIlNhbGRvIGluc3VmaWNpZW50ZS4gRmHDp2EgdW0gZGVww7NzaXRvXG4iKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAob2sgPT0gLTMpIFN5c3RlbS5vdXQucHJpbnRsbigiTGltaXRlIGRlIHNhcXVlcyBhdGluZ2lkb3MuXG4iKTsKICAgICAgICAgICAgICAgIH0gZWxzZSBTeXN0ZW0ub3V0LnByaW50bG4oIkxpbWl0ZSBkZSBzYXF1ZXMgYXRpbmdpZG9zLlxuIik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiUXVhbnRvIGRlc2VqYSBkZXBvc2l0YXI6ICIpOwogICAgICAgICAgICAgICAgaW50IG9rID0gbWluaGFDb250YS5kZXBvc2l0YXIobGVySW50KCkpOwogICAgICAgICAgICAgICAgaWYgKG9rID49IDApIHsKICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkRlcG9zaXRhZG86ICIgKyBvayk7CgkJCSAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJOb3ZvIHNhbGRvOiAiICsgbWluaGFDb250YS5nZXRTYWxkbygpICsgIlxuIik7CiAgICAgICAgICAgICAgICB9IGVsc2UgU3lzdGVtLm91dC5wcmludCgiTsOjbyBwb2RlIHNlciBuZWdhdGl2byIpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgNDogCgkJICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkNhZGFzdHJhbmRvIG5vdm8gY2xpZW50ZS4iKTsKCQkgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIkVudGUgY29tIHNldSBub21lOiAiKTsKCQkgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIkVudHJlIGNvbSBvIHZhbG9yIGluaWNpYWwgZGVwb3NpdGFkbyBuYSBjb250YTogIik7CgkJICAgICAgICBtaW5oYUNvbnRhID0gbmV3IENvbnRhKGVudHJhZGEubmV4dExpbmUoKSwgbGVySW50KCkpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMDogYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk9ww6fDo28gaW52w6FsaWRhIik7CgkgICAgICAgIH0KICAgICAgICB9IHdoaWxlIChvcGNhbyAhPSAwKTsKICAgIH0KICAgIHByaXZhdGUgc3RhdGljIGludCBsZXJJbnQoKSB7CiAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgU3RyaW5nIGxpZG8gPSBlbnRyYWRhLm5leHRMaW5lKCkudHJpbSgpOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIEludGVnZXIucGFyc2VJbnQobGlkbyk7CiAgICAgICAgICAgIH0gY2F0Y2ggKE51bWJlckZvcm1hdEV4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkRlc2N1bHBlLCBtYXMgIiArIGxpZG8gKyAiIG7Do28gw6kgdW0gbsO6bWVybyBpbnRlaXJvLiBUZW50ZSBub3ZhbWVudGUuIik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCmNsYXNzIENvbnRhIHsKCXN0YXRpYyBwcml2YXRlIGludCB1bHRpbWFDb250YTsKICAgIHByaXZhdGUgU3RyaW5nIG5vbWU7CiAgICBwcml2YXRlIGludCBjb250YSwgc2FxdWVzOwogICAgcHJpdmF0ZSBkb3VibGUgc2FsZG87CiAgICBwdWJsaWMgU3RyaW5nIGdldE5vbWUoKSB7IHJldHVybiBub21lOyB9CiAgICBwdWJsaWMgZG91YmxlIGdldENvbnRhKCkgeyByZXR1cm4gY29udGE7IH0KICAgIHB1YmxpYyBkb3VibGUgZ2V0U2FsZG8oKSB7IHJldHVybiBzYWxkbzsgfQogICAgcHVibGljIGludCBnZXRTYXF1ZXMoKSB7IHJldHVybiBzYXF1ZXM7IH0KICAgIHB1YmxpYyBib29sZWFuIHBvZGVTYWNhcigpIHsgcmV0dXJuIHNhcXVlcyA8IDM7IH0KICAgIHB1YmxpYyBDb250YShTdHJpbmcgbm9tZSwgaW50IHNhbGRvSW5pY2lhbCkgewogICAgICAgIHRoaXMubm9tZSA9IG5vbWU7CiAgICAgICAgY29udGEgPSArK3VsdGltYUNvbnRhOwogICAgICAgIHNhbGRvID0gc2FsZG9JbmljaWFsIDwgMCA/IDAgOiBzYWxkb0luaWNpYWw7CiAgICB9CiAgICBwdWJsaWMgaW50IHNhY2FyKGludCB2YWxvcikgewogICAgCWlmICh2YWxvciA8IDEpIHJldHVybiAtMTsKICAgICAgICBpZiAoc2FsZG8gPCB2YWxvcikgcmV0dXJuIC0yOwogICAgICAgIGlmICghcG9kZVNhY2FyKCkpIHJldHVybiAtMzsKICAgICAgICBzYWxkbyAtPSB2YWxvcjsKICAgICAgICBzYXF1ZXMrKzsKICAgICAgICByZXR1cm4gdmFsb3I7CiAgICB9CiAgICBwdWJsaWMgaW50IGRlcG9zaXRhcihpbnQgdmFsb3IpIHsKICAgIAlpZiAodmFsb3IgPCAxKSByZXR1cm4gLTE7CiAgICAgICAgc2FsZG8gKz0gdmFsb3I7CiAgICAgICAgcmV0dXJuIHZhbG9yOwogICAgfQp9CgovL2h0dHBzOi8vcHQuc3RhY2tvdmVyZmxvdy5jb20vcS8yNjI4NDkvMTAx