Java Stack peek 方法显示 0 而不是正确的数字

标签 java linked-list stack peek

我似乎无法理解这个类作业中的逻辑错误是什么。我要使用链表创建一个堆栈。外部类和内部类应该在UserStack中实现。 UserStack实现了老师提供的MyStack。 StackApp 包含了主要部分。

它编译并运行。它正确地要求输入一个整数。如果有需要删除的内容,则会删除;如果有需要显示的内容,则会尝试查看。但总是说已删除或显示数字 0。

我需要尝试覆盖 toString 吗?我问了我的教授,他告诉我像其他学生一样去谷歌。

MyStack.java

public interface MyStack
{
    public void push (int item);

    public int pop ();

    public int peek ();

    public boolean isEmpty ();

}

UserStack.java

import java.util.NoSuchElementException;

public class UserStack implements MyStack
{
    private class Node
    {
        public int value;
        public Node link;

        public Node(int data)
        {
            data = value;
        }
    }

    private Node head = null;

    public void push (int item)
    {
        Node newHead = new Node(item);
        newHead.link = head;
        head = newHead;
    }

    public int pop ()
    {
        if(isEmpty())
            throw new NoSuchElementException();
        int tmp = head.value;
        head = head.link;

        return tmp;
    }

    public int peek ()
    {
        if(isEmpty())
            throw new NoSuchElementException();

        int tmp = head.value;

        return tmp;
    }

    public boolean isEmpty ()
    {
        return head == null;
    }
}

StackApp.java

import java.util.Scanner;

class StackApp
{
    UserStack stack = new UserStack();
    public void displayMenu()
    {
        System.out.println ("1) Add an integer to the list\n" +
                            "2) Remove last integer entered\n" +
                            "3) Look at last integer entered\n" +
                            "0) Exit the program");
        System.out.print ("Selection: ");
    }

    public StackApp()
    {
        int option;
        Scanner input = new Scanner(System.in);

        do{
        displayMenu();
        option = input.nextInt();

        switch (option)
        {
            case 1:
              int number;
              System.out.println("Enter integer to add: ");
              number = input.nextInt();
              stack.push(number);
              break;
            case 2:
              int number2 = stack.pop();
              System.out.println("Interger removed: " + number2);
              break;
            case 3:
              int number3 = stack.peek();
              System.out.println("Next Interger: " + number3);
              break;
            case 0:
              System.out.println("Goodbye");
              break;
            default:
              System.err.println("Unrecongized choice");
              break;
        }
        }while(option != 0);
    }

    public static void main(String[] args)
    {
        new StackApp();
    }
}

最佳答案

您永远不会设置新项目的

关于Java Stack peek 方法显示 0 而不是正确的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38536778/

相关文章:

c - 在c中交换反转链表

stack - 有什么方法可以让 Go 的 channel 表现得像一个堆栈

java - 使用java在中缀到后缀应用程序中获取错误输出

屏幕上的 JavaFX 中心舞台

java - Java8 中的 MapReduce 输出排序

c - 加载我的链接列表时出现问题

c - C 中的链表、结构的结构、段错误

c - 在堆栈中查找 char 数组的地址

java - 创建双数组列表的问题

java - 获取 HashMap 中值的大小/长度