2017-06-02 28 views
-2

我想实现堆栈,但得到这个错误。我不明白为什么我得到这个,因为我定义了一个数组的大小。 我的错误:java.lang.ArrayIndexOutOfBoundsException从那里我打电话推送操作堆栈实现期间的java.lang.ArrayIndexOutOfBoundsException

ReverseStack(int n){ 
     top = - 1; 
     size = n; 
     a = new char[size]; 

    } 
    boolean push(char c){ 
     if(top >=size){ 
      System.out.println("Stack overflow"); 
      return false; 
     }else{ 
      a[top++] = c; 
      return true; 
     } 
    } 
    char pop(){ 
     if(top<0){ 
      System.out.println("Stack underflow"); 
      return 0; 
     }else{ 
      char c = a[top--]; 
      return c; 
     } 
    } 

方法。

public static void reverse(StringBuffer str){ 
     int n = str.length(); 
     ReverseStack obj = new ReverseStack(n); 
     int i; 
     for(i=0; i<n; i++){ 
      obj.push(str.charAt(i)); 
     } 
     for(i=0; i<n; i++){ 
      char ch = obj.pop(); 
      str.setCharAt(i, ch); 
     } 
    } 

有人可以帮助我。任何代码更改或新技术必须审核。

+0

请发表你的错误说什么,以便更好地帮助回答你的问题 – DarkCygnus

+0

@GrayCygnus更新我的问题 –

+1

@shankysingh - 他指的是完整的堆栈跟踪。 –

回答