Skip to content

Latest commit

 

History

History
202 lines (144 loc) · 8.03 KB

File metadata and controls

202 lines (144 loc) · 8.03 KB

Projeto 01 - Conta Bancária - Exceptions - Classe Menu

Nesta etapa, vamos implementar o Método keyPress() na Classe Menu. Este Método tem por Objetivo exigir que a tecla enter do seu teclado seja pressionada para finalizar uma opção do Menu. No estágio atual, quando você seleciona uma opção do Menu, ele mostra a mensagem e recarrega o Menu novamente. Com o Método keyPress(), o Menu será recarregado somente depois de pressionar a tecla enter.


👣 Passo 01 - Atualizar a Classe Menu

  1. Abra a Classe Menu;
  2. Adicione a estrutura Try...Catch na variável opcao, como mostra a figura abaixo:

A estrutura Try...Catch foi implementada na entrada de dados via teclado da variável opcao (recebe o numero do item do menu) para capturar eventuais erros de digitação. No nosso Menu, caso seja digitado um valor diferente de um número inteiro, será exibida a mensagem: Digite valores inteiros!. Na sequência, a variável opcao será reiniciada (valor zero) e será solicitado a digitação de um novo numero.

  1. Adicione o Método keyPress(), depois do Método main(), como mostra a imagem abaixo:

Observe que a estrutura Try...Catch foi implementada na entrada de dados via teclado do Método keyPress() para capturar eventuais erros.

O método System.in.read() indica a leitura de um dispositivo de entrada padrão (teclado), lendo as teclas que foram processadas. Quando for digitada tecla , os dados do buffer nativo são transferidos para a JVM e o primeiro byte digitado é retornado ao usuário e retirado do buffer. Porém se o buffer nativo estiver vazio, o método retorna -1. No caso do Método keyPress(), ao pressionar a tecla , automaticamente o Menu é reiniciado.

Buffer de dados é uma região de memória física utilizada para armazenar temporariamente os dados enquanto eles estão sendo movidos de um lugar para outro. Ao pressionar a tecla , os dados são enviados para a JVM.

  1. Adicione chamadas para o Método keyPress() em todas as opções da estrutura Switch Case do Menu, como mostra a imagem abaixo:

Observe que em todas as opções da estrutura Switch Case do Menu, foram adicionadas a chamada do Método keyPress().

  1. O código completo da Classe Menu, você confere abaixo:
package conta;

import java.io.IOException;
import java.util.InputMismatchException;
import java.util.Scanner;

import contabancaria.model.ContaCorrente;
import contabancaria.model.ContaPoupanca;
import contabancaria.util.Cores;

public class Menu {

	public static Scanner leia = new Scanner(System.in);

	public static void main(String[] args) {

		int opcao = 0;

		// Teste da Classe Conta Corrente
		ContaCorrente cc1 = new ContaCorrente(1, 123, 1, "Adriana", 10000.0f, 1000.0f);
		cc1.visualizar();
		cc1.sacar(12000.0f);
		cc1.visualizar();
		cc1.depositar(5000.0f);
		cc1.visualizar();

		// Teste da Classe Conta Poupança
		ContaPoupanca cp1 = new ContaPoupanca(2, 123, 2, "Victor", 100000.0f, 15);
		cp1.visualizar();
		cp1.sacar(1000.0f);
		cp1.visualizar();
		cp1.depositar(5000.0f);
		cp1.visualizar();

		while (true) {

			System.out.println(Cores.TEXT_YELLOW + Cores.ANSI_BLACK_BACKGROUND
					+ "*****************************************************");
			System.out.println("                                                     ");
			System.out.println("                BANCO DO BRAZIL COM Z                ");
			System.out.println("                                                     ");
			System.out.println("*****************************************************");
			System.out.println("                                                     ");
			System.out.println("            1 - Criar Conta                          ");
			System.out.println("            2 - Listar todas as Contas               ");
			System.out.println("            3 - Buscar Conta por Numero              ");
			System.out.println("            4 - Atualizar Dados da Conta             ");
			System.out.println("            5 - Apagar Conta                         ");
			System.out.println("            6 - Sacar                                ");
			System.out.println("            7 - Depositar                            ");
			System.out.println("            8 - Transferir valores entre Contas      ");
			System.out.println("            9 - Sair                                 ");
			System.out.println("                                                     ");
			System.out.println("*****************************************************");
			System.out.println("Entre com a opção desejada:                          ");
			System.out.println("                                                     " + Cores.TEXT_RESET);
			
			try {
				opcao = leia.nextInt();
			}catch(InputMismatchException e){
				System.out.println("\nDigite valores inteiros!");
				leia.nextLine();
				opcao=0;
			}

			if (opcao == 9) {
				System.out.println("\nBanco do Brazil com Z - O seu futuro começa aqui!");
				sobre();
                 		leia.close();
				System.exit(0);
			}

			switch (opcao) {
			case 1:
				System.out.println("\n Criar Conta");

				keyPress();
				break;
			case 2:
				System.out.println("\n Listar todas as Contas");

				keyPress();
				break;
			case 3:
				System.out.println("\n Buscar Conta por número");

				keyPress();
				break;
			case 4:
				System.out.println("\n Atualizar dados da Conta");

				keyPress();
				break;
			case 5:
				System.out.println("\n Apagar Conta");

				keyPress();
				break;
			case 6:
				System.out.println("\n Sacar");

				keyPress();
				break;
			case 7:
				System.out.println("\n Depositar");

				keyPress();
				break;
			case 8:
				System.out.println("\n Transferir");

				keyPress();
				break;
			default:
				System.out.println("\nOpção Inválida" + Cores.TEXT_RESET);
				
				keyPress();
				break;
			}
		}
	}

    	public static void sobre() {
		System.out.println("\n*********************************************************");
		System.out.println("Projeto Desenvolvido por: ");
		System.out.println("Generation Brasil - generation@generation.org");
		System.out.println("github.com/conteudoGeneration");
		System.out.println("*********************************************************");
	}
    
	public static void keyPress() {

		try {

			System.out.println(Cores.TEXT_RESET + "\n\nPressione Enter para Continuar...");
			System.in.read();

		} catch (IOException e) {

			System.out.println("Você pressionou uma tecla diferente de enter!");

		}
	}
}
  1. Salve e execute o projeto clicando no botão Run.
  2. O resultado você confere na animação abaixo:

Observe que ao escolher qualquer opção do menu (1-8), ele aguarda para até que a tecla enter seja pressionada para retornar ao menu novamente. Caso seja digitado um valor diferente de um numero inteiro na escolha da opção do menu, a mensagem de erro é exibida e o menu é reiniciado. Se pressionar o numero 9, o sistema é finalizado.