java 程序运行会出现 下标越界 如何处理?

import java.util.*;
class Stacks{
Vector<Integer> s =new Vector<Integer>(100,50);
int top;
int count=0;
void InStacks(int data){ //进栈 时间复杂度 :1
s.add(data);
top=data;
count++;
}
void Show(){ //显示函数 时间复杂度 n+1 n与Vector长度有关。
Iterator<Integer> it=s.iterator();
while(it.hasNext()){
System.out.print(" "+it.next());
}
}
int GetTop(){ //取栈顶 时间复杂度 1
System.out.println("栈顶为:"+top);
return top;
}
void OutStacks(){ //退栈 时间复杂度 n+1 n与Vector长度有关。
int out = 0;
int index=0;
Iterator<Integer> it=s.iterator();
while(it.hasNext()){
out=it.next();
index++;

}
s.removeElement(index);
count--;
System.out.println("退出的是:"+out);
index=0;
}
int Spedata1(){ //取最大 最小 中间值 时间复杂度 n+1
int sdata[] =new int[count]; //如果 主函数 中有 for(int i=0;i<N;i++)
int i =0; // {s.Instack(data); s,Spedata()}
Iterator<Integer> it =s.iterator(); // 那么 时间复杂度为 (N+1)*(n+1)
while(it.hasNext()){
sdata[i]=it.next();
i++;
}

Arrays.sort(sdata);

System.out.println("最小是:"+sdata[0]);
return sdata[count-1];

}
int Spedata2(){ //取最大 最小 中间值 时间复杂度 n+1
int sdata[] =new int[count]; //如果 主函数 中有 for(int i=0;i<N;i++)
int i =0; // {s.Instack(data); s,Spedata()}
Iterator<Integer> it =s.iterator(); // 那么 时间复杂度为 (N+1)*(n+1)
while(it.hasNext()){
sdata[i]=it.next();
i++;
}
i=0;
Arrays.sort(sdata);

System.out.println("最大是:"+sdata[count-1]);
return sdata[count-1];
}
int [] Spedata3(){ //取最大 最小 中间值 时间复杂度 n+1
int sdata[] =new int[count]; //如果 主函数 中有 for(int i=0;i<N;i++)
int i =0; // {s.Instack(data); s.Spedata()}
int mid [] =new int[2];
Iterator<Integer> it =s.iterator(); // 那么 时间复杂度为 (N+1)*(n+1)
while(it.hasNext()){
sdata[i]=it.next();
i++;
}
i=0;
Arrays.sort(sdata);
int m =count/2;
if(count%2==0){
System.out.println("中间数据"+sdata[m-1]+" "+sdata[m]);
mid[0]=sdata[m-1];
mid[1]=sdata[m];
return mid;
}

else{
System.out.println("中间数据"+sdata[m]);
mid[0]=sdata[m];
return mid;
}

}
}

第1个回答  2012-09-19
要不你就把可能越界的语句放到try-catch代码块中吧,这样至少会把程序执行完本回答被网友采纳
第2个回答  2012-09-19
程序没问题啊,你再试下,把那个出错的错误信息贴出来看看。
另外,你退栈时忘了改栈顶了吧本回答被提问者采纳
第3个回答  2012-09-19
不让它越界就好了嘛~
相似回答