import java.util.Scanner; public class ArrayStackDemo { public static void main(String[] args) { ArrayStack arrayStack = new ArrayStack(4); String key = ""; boolean loop = true; // 控制是否退出菜单 Scanner scanner = new Scanner(System.in); while (loop) { System.out.println("show:遍历栈"); System.out.println("exit:退出程序"); System.out.println("push:入栈"); System.out.println("pop:出栈"); key = scanner.next(); switch (key) { case "show": arrayStack.list(); break; case "exit": scanner.close(); loop = false; break; case "push": int val = scanner.nextInt(); arrayStack.push(val); break; case "pop": try { int res = arrayStack.pop(); System.out.println("出栈的数据是:"+res); }catch (Exception e){ System.out.println(e.getMessage()); } break; default: break; } } System.out.println("程序退出~"); } } /** * 数组模拟栈 */ class ArrayStack { private int maxSize; // 栈的大小 private int[] stack; // 用数组模拟栈 private int top = -1; // 栈顶,初始化为-1 /** * 构造方法 * * @param maxSize */ public ArrayStack(int maxSize) { this.maxSize = maxSize; stack = new int[this.maxSize]; } /** * 判断栈是否已满 * * @return */ public boolean isFull() { return top == (maxSize - 1); } /** * 判断栈是否为空 * * @return */ public boolean isEmpty() { return top == -1; } /** * 入栈 * * @param value */ public void push(int value) { if (isFull()) { System.out.println("栈满,无法入栈~"); return; } stack[++top] = value; } /** * 出栈 */ public int pop() { if (isEmpty()) { throw new RuntimeException("栈空,无法出栈~"); } int val = stack[top--]; return val; } /** * 遍历栈 */ public void list() { if (isEmpty()) { System.out.println("栈空~"); return; } for (int i = top; i >= 0; i--) { // 倒序 System.out.println(stack[i]); } } }