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]);
}
}
}