我似乎无法理解这个类作业中的逻辑错误是什么。我要使用链表创建一个堆栈。外部类和内部类应该在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/