Java实战(五)用数组实现栈(自定义异常、接口)

定义栈接口,并采用数组实现,并采用自定义异常处理栈满和栈空时的错误操作。

(1)定义接口
(2)定义异常类
(3)采用数组实现栈类

实现代码:

package CurriculumDesign;

/*
 4.定义栈接口,并采用数组实现,并采用自定义异常处理栈满和栈空时的错误操作。
 (1)定义接口
 (2)定义异常类
 (3)采用数组实现栈类
*/

//自定义异常类,继承Exception类
class StackException extends Exception
{
 int index = 0;

 public StackException(int index) {
     this.index = index;
 }

 @Override
 public String toString() {
     return "StackExceptionAt{ " + "index=" + index + " }";
 }
}

//定义接口
interface MyStack
{
 int pop() throws StackException;
 void push(int value) throws StackException;
}

//实现接口,定义栈类
class ArrayStack implements MyStack
{
 int pos;
 int[] data = null;

 public ArrayStack() {
     pos = -1;
     data = new int[32];
 }

 public ArrayStack(int size) {
     pos = -1;
     data = new int[size];
 }

 //重写接口方法
 @Override
 public int pop() throws StackException {
     if(pos<0)
     {
         throw new StackException(pos);
     }
     return data[pos--];
 }

 @Override
 public void push(int value) throws StackException {
     if (pos >= (data.length-1))
     {
         throw new StackException(pos+1);
     }
     data[++pos] = value;
 }
}


public class Test5 {
 public static void main(String[] args) {
     //定义一个长度大小为3的栈
     ArrayStack arrayStack = new ArrayStack(3);

     //此时队列为空,取出元素会产生异常
     try {
         arrayStack.pop();
     } catch (StackException e) {
         System.out.println(e.toString());
     }

     //此时加入插入四个元素(>3)队列会产生异常
     try {
         arrayStack.push(1);
         System.out.println("栈顶压栈的值为:1");
         arrayStack.push(2);
         System.out.println("栈顶压栈的值为:2");
         arrayStack.push(3);
         System.out.println("栈顶压栈的值为:3");
         arrayStack.push(4);
         System.out.println("栈顶压栈的值为:4");
     } catch (StackException e) {
         System.out.println(e.toString());
     }

     //尝试取出栈顶元素
     try {
         System.out.println("取出栈顶元素的值为:"+arrayStack.pop());
         System.out.println("取出栈顶元素的值为:"+arrayStack.pop());
         System.out.println("取出栈顶元素的值为:"+arrayStack.pop());
         System.out.println("取出栈顶元素的值为:"+arrayStack.pop());
     } catch (StackException e) {
         System.out.println(e.toString());
     }
 }
}

运行结果:

Java实战(五)用数组实现栈(自定义异常、接口)_第1张图片

Java实战(五)用数组实现栈(自定义异常、接口)_第2张图片

你可能感兴趣的:(JavaSE,stack,栈,异常,接口)