public class ArrayStackDemo { public static void main(String[] args) { ArrayStack stack = new ArrayStack(5); String key; boolean loop = true; Scanner scanner = new Scanner(System.in); while (loop) { System.out.println("==================="); System.out.println("请输入下列指令"); System.out.println("show: 展示栈内容"); System.out.println("pop: 出栈"); System.out.println("peek: 显示栈顶"); System.out.println("push: 入栈"); System.out.println("exit: 退出程序"); System.out.println("==================="); key = scanner.next(); switch (key) { case "show": stack.show(); break; case "push": System.out.println("输入一个数"); int value = scanner.nextInt(); stack.push(value); break; case "peek": try { System.out.println("栈顶数值是:" + stack.peek()); } catch (Exception e) { System.out.println(e.getMessage()); } break; case "pop": try { int v = stack.pop(); System.out.println("出栈数值: " + v); } catch (Exception e) { System.out.println(e.getMessage()); } break; case "exit": scanner.close(); loop = false; break; default: break; } } System.out.println("Exit app successfully!"); }}class ArrayStack { private int size; private int[] arr; private int top; public ArrayStack(int size) { this.size = size; arr = new int[size]; top = -1; } public boolean isEmpty() { return top == -1; } public boolean isFull() { return top == size - 1; } public void push(int n) { if (isFull()) { System.out.println("栈已满,无法继续push!"); return; } arr[++top] = n; } public int pop() { if (isEmpty()) { throw new RuntimeException("栈是空的,pop失败!"); } return arr[top--]; } public int peek() { if (isEmpty()) throw new RuntimeException("栈是空的,peek失败!"); return arr[top]; } public void show() { if (isEmpty()) { System.out.println("栈是空的,show不出来"); return; } for (int i = top; i >= 0; i--) { System.out.println(arr[i]); } System.out.println(); }}