title: method to insert/append elements in array list
body: <p>I am not sure if I am implementing the insert or append correctly but I get this error:</p>
  
  <blockquote>
    <p>Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:
    -1    at AListInt.insert(AListInt.java:81) // listArray[i+1] = listArray[i];  at ListTest.main(ListTest.java:52) // list.insert(i);</p>
  </blockquote>
  
  <p>Also I cannot use java.util.ArrayList
  Here is the code and classes for it:</p>
  
  <p>class:   </p>
  
  <pre><code>public class AListInt {
  
  
  int [] listArray;
  int listSize;
  int curr; // current position
  
  AListInt() {
      listSize = 0;
  
      // note that curr = -1 when listSize = 0
      curr = -1;
      listArray = new int [2];
  }
  
  public int getValue () throws DSException {
      return listArray[curr];
        //returns the value of current position
        //throw exception when there are no elements in the list
  }
  
  public int length() {
      return listSize;
      //return # of elements in the list
  }
  
  
  public int currPos() {
      return curr;
      //return current position.
  }
  
  public void moveToPos ( int pos ) throws DSException {
      curr = pos;
        //move the current position to pos
        //throw exception if pos is not a valid position
  }
  
  public void moveToStart () throws DSException {
      curr = 0;
        //move the current position to the start of the list
        //throw exception if no elements are in the list
  }
  
  
  public void moveToEnd () throws DSException {
      curr = listSize;
        //move the current position to the end of the list
        //throw exception if no elements are in the list
  }
  
  
  public void prev () throws DSException {
      if(curr != 0)
      {
          curr--;
      }
        //move current position to the previous element
        //throws exception if the previous position is not legal or
        //    if there are no elements in the list
  }
  
  
  public void next () throws DSException {
      if(curr &lt; listSize)
      {
          curr++;
      }
        //move current position to the next element
        //throws exception if the next position is not legal or
        //    if there are no elements in the list
  }
  
  
  public void insert ( int item ) {
  
      for(int i = listSize-1; i &gt;= curr; i++)
      {
          listArray[i+1] = listArray[i];
  
      }
      listArray[curr] = item;
      listSize ++;
  
      int[]temp = new int[listArray.length*2];
      for(int i = 0; i&lt; listSize; i++)
      {
          temp[i] = listArray[i];
      }
      listArray = temp;
  
      // inserts item to the current position
      // if not enough memory, double the size of listArray
  }
  
  
  public void append ( int item ) {
      listArray[listSize++] = item;
  
      int[]temp = new int[listArray.length*2];
      for(int i = 0; i&lt; listSize; i++)
      {
          temp[i] = listArray[i];
          listArray = temp;
      }
      // inserts item to the end of the list
      // if not enough memory, double the size of listArray       
  }
  
  public int remove () throws DSException {
       if((curr &lt; 0)||(curr &gt; listSize))
       {
              return -1;
       }
  
   int item;
   item = listArray[curr];
  
      for(int i = curr; i &lt; listSize - 1; i++)
      {
          listArray[i] = listArray[i+1];
      }
      listSize --;
      return item;
        //removes the element at the current position
        //returns the removed element
  
  }
  
  public void clear() {
      listSize = 0;
      curr = -1;
      //reset size.  Set current position to be -1
  }
  
  public boolean find ( int val ) {
      for(int i = 0; i &gt; listSize; i ++)
      {
          if(listArray[i] == val)
          {
              return true;
          }
      }
      return false;
    //searches for val in the list
      //returns true if found and false if not found
  }
  
  public void print () {
      System.out.print("&lt;");
      for(int i = 0; i &lt; listSize; i++)
      {
          System.out.print(listArray[i]);
  
          if(listSize == -1)
          {
              System.out.print("-1");
          }
      }
      System.out.print("&gt;");
      //outprint the list
  }
  </code></pre>
  
  <p>}</p>
  
  <p>exception:</p>
  
  <pre><code>    public class DSException extends Exception {
    public DSException() {
    }
  
    public DSException(String msg) {
      super(msg);
    }
  }
  </code></pre>
  
  <p>main:</p>
  
  <pre><code>public class ListTest {
  
  public static void main ( String[] args ) {
  
  try {
      AListInt list = new AListInt();
  
      list.print();
  
  
      // test length()
      System.out.println ( list.length() );
  
  
      // test currPos()
      System.out.println ( list.currPos() );
  
      // insert some numbers
      for ( int i = 0; i &lt; 4; i++ ) {
      list.append(i);
      list.print();
      }
  
      list.moveToPos(0);
      list.print();
  
      list.moveToEnd();
      list.print();
  
  
      // test getValue()                                                                                                                                                     
      System.out.println ( list.getValue() );
  
      System.out.println ( "remove: " + list.remove() );
      list.print();
  
      list.moveToStart();
      list.print();
  
      System.out.println ( "remove: " + list.remove() );
      list.print();
  
      list.clear();
      list.print();
  
      list.clear();
      list.print();
  
      System.out.println ( "find 0 : " + list.find ( 0 ) );
  
      for ( int i = 0; i &lt; 4; i++ ) {
      list.insert(i);
      list.print();
      }
  
      for ( int i = 0; i &lt; 5; i++ ) {
      System.out.println ( "find " + i + " : " + list.find ( i ) );
      list.print();
      }
  
      list.next();
      list.print();
  
      list.insert ( -9 );
      list.print();
  
      list.append ( -2 );
      list.print();
  
      list.moveToEnd();
      list.insert ( -1 );
      list.print();
  
  
      System.out.println ( "remove: " + list.remove() );
      list.print();
  
  } catch ( DSException e ) {
      e.printStackTrace();
  }
  
  }
  </code></pre>
  
  <p>}</p>