Search code examples
javaarraysbubble-sort

returning ArrayIndexOutOfBoundsException error for unknown reason


I am trying to create a basic bubble sort program but at some point the array tries to reference the 11th position despite the array being 10 long and i am not sure when it occurs

int Last, i = 0, Temp;
    int[] Numbers = new int[10];
    String[] NumbersString = new String[10];
    String initialString = TextBox.getText();
    NumbersString = initialString.split(" ");
    while(i<10){
        Numbers[i] = Integer.parseInt(NumbersString[i]);
        i = i + 1;
    }
    Last = 9;
    Boolean Swapped = true;
    while(Swapped = true) {
        Swapped = false;
        i = 0;
        while(i < Last) {
                if(Numbers[i] > Numbers[i+1]){
                Temp = Numbers[i];
                Numbers[i] = Numbers[i+1];
                Numbers[i+1] = Temp;
                Swapped = true;
                }
            i = i + 1;
        }
        Last = Last-1;
    }
    String Result = Numbers[0] + " " + Numbers[1] + " " + Numbers[2] + " " + Numbers[3] + " " + Numbers[4] + " " + Numbers[5] + " " + Numbers[6] + " " + Numbers[7] + " " + Numbers[8] + " " + Numbers[9];
    ResultText.setText(Result);

Solution

  • change

     while(Swapped = true) {
    

    to

     while(Swapped == true) {
    

    What is happening is that Last is firstly wrapping to Negative and then when it gets to the minimum negative number it wraps to Integer.MAX_VALUE and then i will exceed 9