我正在尝试使用冒泡排序将已读入程序的数组按字母顺序排列。该代码编译没有错误,但是当我尝试运行该程序时,在“ if”构造上出现了数组索引超出界限异常。我已经将int i初始化为0以说明数组的第一个索引,因此我认为我的错误在其他地方。我并不是在要求任何人为我编写代码,而只是向正确的方向迈出了一步。谢谢你的帮助。

public static String[] bubbleSort(String[] inL)
{
    String temp;
    int i = 0, passNum;

    for(passNum = 1; passNum <= (inL.length); i++)  // controls passes through bubble sort
    {
        if(inL[i].compareToIgnoreCase(inL[i + 1]) < 0)
        {
            temp = inL[i];
            inL[i] = inL[i + 1];
            inL[i + 1] = temp;
        }
    }

    return inL; // returns sorted array
} // end bubbleSort method

最佳答案

您将passNum而不是i与数组的长度进行比较。由于passNum从未修改,因此循环条件始终为true,并且i会递增,直到超出数组的范围。

即使此特定问题已解决,您当前的实现仍可能会遇到一个一次性错误的问题。考虑是否应将iinL.length - 1进行比较。

10-08 02:31