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.
- Abra a Classe Menu;
- 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.
- 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.
- 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().
- 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!");
}
}
}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.






Voltar