Olá pessoal, sou novo no mundo da programação, e também a primeira vez que posto aqui no forum. Estou tentando fazer um exercicio sobre pilhas, porem estou encontrando dificuldades.
O exercicio pede para que apresente um menu com 4 opções:
1 - Cadastrar Numero
2 - Mostrar numeros pares
3 - excluir numero
4 - Sair
Observações:
a-) Implementar usando pilha
b-) Quando for escolhida a opção 1, só parar de cadastrar numero a hora que o usuário pressionar a tecla f
c-) Mostrar opção invalidade do menu
d-) Mostrar mensagem se usuário tentar realizar uma opção invalida (Ex: excluir numero se a pilha estiver vazia)
A minha principal dificuldade no momento é atender a observação b-) e é para ela que solicito ajuda de vocês. Criei um contador dentro do case 1 apenas para testar se a pilha estava cadastrando os numero corretamente, mas a intenção é ficar lendo o numero a ser empilhado até o usuário pressionar a tecla “f”. Como eu poderia fazer isso? Outra duvida é fazer com que ao usuario pressionar a tecla “f”, ele não finalizasse o programa, mas sim voltasse para o menu.
Segue o que tenho do codigo até o momento:
package pilha;
import java.util.Scanner;
public class Pilha {
public Object[] pilha;
public int posicaoPilha;
public Pilha(){
this.posicaoPilha = -1;
this.pilha = new Object [1000];
}
public boolean pilhaVazia(){
if(this.posicaoPilha == -1){
return true;
}
return false;
}
public int tamanho (){
if (this.pilhaVazia()){
return 0;
}
return this.posicaoPilha +1;
}
public Object exibeUltimoValor(){
if(this.pilhaVazia()){
return 0;
}
return this.posicaoPilha +1;
}
public Object desempilhar (){
if (pilhaVazia()){
return null;
}
return this.pilha[this.posicaoPilha--];
}
public void empilhar (Object valor){
if (this.posicaoPilha < this.pilha.length -1){
this.pilha[++ posicaoPilha] = valor;
}
}
public static void main(String[] args) {
int contador=0;
int numero;
int opcao;
Pilha p = new Pilha();
Scanner entrada = new Scanner (System.in);
System.out.printf("Digite a opção desejada:\n" + "1 - Cadastrar Numero\n" + "2 - Mostrar numeros pares\n" + "3 - Excluir Numero\n" + "4 - Sair\n\n");
opcao = entrada.nextInt();
switch (opcao){
case 1:
while (contador < 5) {
System.out.printf("Digite o numero a ser cadastrado\n");
numero = entrada.nextInt();
p.empilhar(numero);
contador++;
}
break;
case 2:
}
System.out.println(("O tamanho da pilha é: "+ p.exibeUltimoValor()));
}
}