i'm tasked with creating a method which has the same functionality as splice however I cannot get the appropriate value into the appropriate index. My code works as follows,
public void PlaceElementAt(int newValue, int index) throws ArrayIndexOutOfBoundsException {
    //check that index is valid
    if (index >= 0 && index <= data.length) {  //Checks that the index is within position 0 and 7 by default.
        System.out.println ("Index is valid"); //returns index is valid if so
    }
    //increase size if necessary
    if (data.length == numElements) {  //checking if the number of elements is filling the spaces
      doubleCapacity();               // calls upon the double capacity method if it is
    }
    if (numElements==0) {
        data[numElements] = newValue;
        System.out.println ("Element: " + data[numElements] + " at index: " + index);
        numElements++;
    }
    //shuffle values down from index
    else {
     int bottompos = numElements-1;
     int loopcount = numElements-index;
     int NewBottom = numElements+1;
     for (int i=0; i<loopcount; i++){
         data[bottompos]=data[NewBottom];
         bottompos--;
         NewBottom--;
     }
      //insert newValue at index
      data[numElements] = newValue;
        System.out.println ("Element: " + data[numElements] +" at index: " + index);      
        numElements++;
    }
}
My issue is apparent when I later give the commands in my main method.
myData.PlaceElementAt(3,0)
myData.PlaceElementAt(2,5)
myData.PlaceElementAt(7,3)
Once I check my breakpoints i see the values are being added to the array however they are being added on a 1 by 1 basis starting from index 0. Any suggestions greatly helps.
 
     
    