Alright so the task at hand is to add to the existing program OrdArray an insert method that uses a binary search. And currently I am having a disaster of a time trying to get the program to add elements into the correct place.

I will definitely admit my code is a mess. From attempting to debug it really seems that at random the temp place holder variable will have a value (Ex. 99), but by the next line where that value is to be inputted into the array the temp variable inputs a 0.
public class OrdArray {
    private long[] a;
    private int nElms;
 
    public OrdArray(int Max)
    {
        a = new long[Max];
        nElms = 0;
    }
 
public void insert (long value)
    {
            long temp = 0, temp2 = 0;
            int curIn;
            int lowerBound = 0;
            int upperBound = nElms - 1;
 
            boolean skip = true;        //boolean to skip binary search for first two inserted values
 
         if((nElms-1) == a.length)      //can an element be added
            System.out.print("The array is full and can not insert another element");
 
        else                        //an element can be entered
        {
 
            if(nElms == 0)
            {
                a[0]= value;
                nElms++;
                skip = false;
            }
 
            else if(nElms ==1)      //Insert first two value into array
            {
 
                if(a[0]< value)
                    a[1] = value;
                else
                {
                    temp = a[0];
                    a[0] = value;
 
                }
                skip = false;
                nElms++;
            }//End of insert first two values.
 
 
            if(value < a[0])            //Check insert value against first element in array
            {
                temp = a[0];
                a[0] = value;
                for (int k =lowerBound+1; k < nElms; k++) //move values up array
                    {
                        temp2 = a[k];
                        a[k]  = temp;
                        temp = temp2;
                    }
                    nElms++;
                    a[nElms] = temp;
                    skip = false;
            }
 
            else if(value> a[nElms-1])          //Check insert value against last value in array
            {
                a[nElms] = value;
                nElms++;
            }
 
            while(skip)
            {
                curIn = (lowerBound + upperBound) / 2;  //find midpoint
 
                if(a[lowerBound+1] > value)             //found at what point to enter value from below value
                {
                    temp = a[lowerBound+1];            //hold that current spot's value
                    a[lowerBound + 1] = value;       //put value in that spot
                    for (int k =lowerBound+2; k <= nElms; k++) //move values up array
                    {
                        temp2 = a[k];
                        a[k]  = temp;
                        temp = temp2;
                    }
                    nElms++;                    //Increase number of elements
                    break;
                }
 
                if(a[upperBound -1] < value)             //found at what point to enter value from above value
                {
                    temp = a[upperBound];            //hold that current spot's value
                    a[upperBound] = value;       //put value in that spot
                    for (int k =upperBound+1; k <= nElms; k++) //move values up array
                    {
                        temp2 = a[k+1];
                        a[k]  = temp;
                        temp = temp2;
                    }
                    nElms++;                    //Increase number of elements
                    break;
                }
 
                else if(a[curIn] < value)   //where is it in the array
                    lowerBound = curIn +1;  //it's in upper half
                else
                    upperBound = curIn-1;   //it's in lower half
            }//end while
        }//end else
    }//end insert()
}

This is what I am suppose to test.
public class OrderedApp {
 
    public static void main(String[] args)
    {
        int maxSize = 100;
        OrdArray arr;               //create new ordered array
        arr = new OrdArray(maxSize);    //initialize ordered arry
 
        arr.insert(77);             //Insert values
        arr.insert(99);
        arr.insert(44);
        arr.insert(55);
        arr.insert(22);
        arr.insert(88);
        arr.insert(11);
        arr.insert(00);
        arr.insert(66);
        arr.insert(33);
    }

As of right now the output is
0 11 22 44 55 77 0 88 0 66 0 33 0 0


So the sort partially works and then doesn't sort some numbers or overwrites them.