这是关于 StackOverflow 上的 Stack 的问题。
我的问题可能看起来非常模糊,但是如果您检查我编写的程序,那么您可能会理解我要问的内容。我自己实现了堆栈。我向用户展示了 3 个选择。推送、弹出和查看堆栈。当调用 view(display) 方法时,会显示一堆 0 而不是什么也没有。我们知道堆栈不包含任何内容,除非我们在上面放一些东西。但是由于我实现的堆栈是使用数组的整数堆栈,因此调用显示方法时会显示一堆 0(数组中整数的默认值)。我如何不显示任何内容而不是 0。我知道我可以为空白字符添加 ASCII,但我认为它仍然会违反堆栈规则(没有元素时堆栈应该为空,甚至没有空格代码)。
这是我的程序:
import java.util.Scanner;
public class StackClass
{
public static void main(String []args)
{
Scanner input=new Scanner(System.in);
int choice=0;
int push;
Stack stack=new Stack();
do
{
System.out.println("Please select a stack operation:\n1. Press 1 for adding to stack\n2. Press 2 for removing elements from stack\n3. View the stack");
choice=input.nextInt();
switch(choice)
{
case 1:
System.out.println("Please enter the number that you want to store to stack");
push=input.nextInt();
stack.push(push);
case 2:
stack.pop();
case 3:
stack.display();
}
}
while((choice==1)||(choice==2)||(choice==3));
}
}
class Stack
{
private int size;
private int[] stackPlaces=new int[15];
private int stackIndex;
Stack()
{
this.size=0;
this.stackIndex=0;
}
public void push(int push)
{
if(size<15)
{
stackPlaces[stackIndex]=push;
size++;
stackIndex++;
}
else
{
System.out.println("The stack is already full. Pop some elements and then try again");
}
}
public void pop()
{
if(size==0)
{
System.out.println("The stack is already empty");
}
else
{
stackPlaces[stackIndex]=0;
size--;
stackIndex--;
}
}
public void display()
{
System.out.println("The stack contains:");
for(int i=0;i<stackPlaces.length-1;i++)
{
System.out.println(stackPlaces[i]);
}
}
}