[RESOLVIDO]Pilha em JAVA

Boa noite, estou tendo problemas na lógica deste programa. Não sei se o push não está salvando as tarefas ou se o problema está na impressão :frowning:

Segue código, caso possam me ajudar:

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);

	Stack<String> minhaPilha = new Stack<String>();
	int escolha;
	
	do {
	System.out.println("1 - Inserir");
    System.out.println("2 - Mostrar próxima tarefa");
    System.out.println("3 - Sair");
    escolha = sc.nextInt();
    
    if(escolha < 1 || escolha > 3) {
    	System.out.println("Você escolheu uma opção inválida.");
    } else if(escolha == 1) {
    	System.out.println("Insira a tarefa:");
    	minhaPilha.push(sc.nextLine());
        sc.next();
    } else if(escolha == 2) {
    	if(!minhaPilha.empty()) {
    		System.out.println("A pilha de tarefas está vazia.");
    	} else {
    		System.out.println("A próxima tarefa a ser realizada é: " + minhaPilha.peek());
    	}
    } 
	} while (escolha != 3);
}

O método peek() devolve uma referência ao objeto do topo da pilha, mas não remove ele da pilha.
Para remover, utilize o método pop(). :slight_smile:

1 curtida

Mas no caso o peek não esta me retornando quem está no topo. Ele não o deveria fazer? Antes que eu implemente o método pop().

Consegui resolver. O problema estava no nextLine, de alguma forma ele não permitia a impressão do peek. Ao menos, leiga como ainda sou, quando deixei apenas o next() para pedir informações o programa rodou perfeitamente. Ai acrescentei o método que você me aconselhou antes de mostrar a próxima tarefa. Obrigada sz

Quando você usa o Scanner para ler do TECLADO, deve usar somente o nextLine()