package com.liyiyuan.javase.test01;publicclassArraytest{private Object[] array;privateint index =0;//指向栈的顶部//构造方法publicArraytest(){this.array =newObject[10];//没有给定栈的大小,默认赋值10}publicArraytest(int a){this.array =newObject[a];}//PUSH方法 压栈publicvoidPush( Object ever){//存入一个元素到array中if(index == array.length){return;}this.array[index]= ever;
System.out.println(this.array[index]);
index +=1;if(index == array.length){
System.out.println("栈满,接下来输入的数据无效。");}}//POP方法 弹栈public Object Pop(){//返回array中的一个元素if(index ==0){return null;}
index--;
Object ob =newObject();
ob = array[index];
array[index]= null;
System.out.println(ob);if(index ==0){
System.out.println("栈空,没有数据可以弹栈了。");}return ob;}}
接下来我们要写出一个测试程序,但第一步要建立一个Student类,用来建立对象。
package com.liyiyuan.javase.test01;publicclassStudent{
String name;int num;@Overridepublic String toString(){return"Student [name="+ name +", num="+ num +"]";}publicStudent(){}publicStudent(String name ,int num){this.name = name;this.num = num;}}
再就是测试程序
publicclassTest{publicstaticvoidmain(String[] args){// TODO Auto-generated method stub
Arraytest sta =newArraytest(20);
Student st1 =newStudent("zhangsan",1);//sta.Push(st1);//压栈for(int i =0; i <22; i++){
sta.Push(st1);}
Student st2 =newStudent("lisi",2);
sta.Push(st2);//弹栈for(int j =0; j <22; j++){//System.out.println(sta.Pop());
sta.Pop();}}}
在测试时出现的问题
/**
* 测试程序存在的问题:
*
* 当存入数据过多时会出现异常。
* Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 10 out of bounds for length 10
at com.liyiyuan.javase.test01.Arraytest.Push(Arraytest.java:18)
at com.liyiyuan.javase.test01.Test.main(Test.java:29)
已经解决
* 当弹栈超出长度时会出现异常
* Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index -1 out of bounds for length 10
* at com.liyiyuan.javase.test01.Arraytest.Pop(Arraytest.java:30)
* at com.liyiyuan.javase.test01.Test.main(Test.java:29)
* 已经解决
*
* 给数组初始化长度时出现了问题。 已解决。
*/