由于未知原因返回 ArrayIndexOutOfBoundsException 错误

returning ArrayIndexOutOfBoundsException error for unknown reason

我正在尝试创建一个基本的冒泡排序程序,但在某些时候数组试图引用第 11 个位置,尽管数组有 10 个长,我不确定它何时发生

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);

改变

 while(Swapped = true) {

 while(Swapped == true) {

发生的事情是 Last 首先回绕到负数,然后当它达到最小负数时回绕到 Integer.MAX_VALUE 然后 i 将超过 9

试着把数组的长度放在这里。

int Last, i = 0, Temp;
    int[] Numbers = new int[10];
    String[] NumbersString = new String[10];
    String initialString = "1";
    NumbersString = initialString.split(" ");
    while (i < NumbersString.length) { // <-- I change it to NumbersString.length
        Numbers[i] = Integer.parseInt(NumbersString[i]);
        i = i + 1;
    }
    Last = Numbers.length-1; // <-- I change it to Numbers.length-1
    Boolean Swapped = true;
    while (Swapped) { // <-- I change it to Swapped only because your Swapped is a Boolean type, no need to equals it into 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];
    System.out.println(Result);
}