fork download
  1. import java.util.Scanner;
  2.  
  3. class Main {
  4. static private Conta minhaConta;
  5. static private Scanner entrada = new Scanner(System.in);
  6. public static void main(String[] args) {
  7. int opcao = -1;
  8. do {
  9. System.out.println("\t Escolha a opção desejada");
  10. if (minhaConta != null) {
  11. System.out.println("1 - Consultar Saldo");
  12. System.out.println("2 - Sacar");
  13. System.out.println("3 - Depositar");
  14. }
  15. System.out.println("4 - Abrir Conta");
  16. System.out.println("0 - Sair\n");
  17. System.out.print("Opção: ");
  18. opcao = lerInt();
  19. if (minhaConta == null && opcao != 0) opcao = 4;
  20. switch (opcao) {
  21. case 1:
  22. System.out.println("SALDO");
  23. System.out.println("Nome: " + minhaConta.getNome());
  24. System.out.println("Número da conta: " + minhaConta.getConta());
  25. System.out.printf("Saldo atual: %.2f\n", minhaConta.getSaldo());
  26. System.out.println("Saques realizados: " + minhaConta.getSaques() + "\n");
  27. break;
  28. case 2:
  29. if (minhaConta.podeSacar()) {
  30. System.out.print("Quanto deseja sacar: ");
  31. int ok = minhaConta.sacar(lerInt());
  32. if (ok >= 0) {
  33. System.out.println("Sacado: " + ok);
  34. System.out.println("Novo saldo: " + minhaConta.getSaldo() + "\n");
  35. } else if (ok == -1) System.out.println("Não pode ser negativo\n");
  36. else if (ok == -2) System.out.println("Saldo insuficiente. Faça um depósito\n");
  37. else if (ok == -3) System.out.println("Limite de saques atingidos.\n");
  38. } else System.out.println("Limite de saques atingidos.\n");
  39. break;
  40. case 3:
  41. System.out.print("Quanto deseja depositar: ");
  42. int ok = minhaConta.depositar(lerInt());
  43. if (ok >= 0) {
  44. System.out.println("Depositado: " + ok);
  45. System.out.println("Novo saldo: " + minhaConta.getSaldo() + "\n");
  46. } else System.out.print("Não pode ser negativo");
  47. break;
  48. case 4:
  49. System.out.println("Cadastrando novo cliente.");
  50. System.out.print("Ente com seu nome: ");
  51. System.out.print("Entre com o valor inicial depositado na conta: ");
  52. minhaConta = new Conta(entrada.nextLine(), lerInt());
  53. break;
  54. case 0: break;
  55. default:
  56. System.out.println("Opção inválida");
  57. }
  58. } while (opcao != 0);
  59. }
  60. private static int lerInt() {
  61. while (true) {
  62. String lido = entrada.nextLine().trim();
  63. try {
  64. return Integer.parseInt(lido);
  65. } catch (NumberFormatException e) {
  66. System.out.println("Desculpe, mas " + lido + " não é um número inteiro. Tente novamente.");
  67. }
  68. }
  69. }
  70. }
  71.  
  72. class Conta {
  73. static private int ultimaConta;
  74. private String nome;
  75. private int conta, saques;
  76. private double saldo;
  77. public String getNome() { return nome; }
  78. public double getConta() { return conta; }
  79. public double getSaldo() { return saldo; }
  80. public int getSaques() { return saques; }
  81. public boolean podeSacar() { return saques < 3; }
  82. public Conta(String nome, int saldoInicial) {
  83. this.nome = nome;
  84. conta = ++ultimaConta;
  85. saldo = saldoInicial < 0 ? 0 : saldoInicial;
  86. }
  87. public int sacar(int valor) {
  88. if (valor < 1) return -1;
  89. if (saldo < valor) return -2;
  90. if (!podeSacar()) return -3;
  91. saldo -= valor;
  92. saques++;
  93. return valor;
  94. }
  95. public int depositar(int valor) {
  96. if (valor < 1) return -1;
  97. saldo += valor;
  98. return valor;
  99. }
  100. }
  101.  
  102. //https://pt.stackoverflow.com/q/262849/101
Success #stdin #stdout 0.13s 35408KB
stdin
4
Joao
100
0
stdout
	 Escolha a opção desejada
4 - Abrir Conta
0 - Sair

Opção: Cadastrando novo cliente.
Ente com seu nome: Entre com o valor inicial depositado na conta: 	 Escolha a opção desejada
1 - Consultar Saldo
2 - Sacar
3 - Depositar
4 - Abrir Conta
0 - Sair

Opção: