java - IndexOutOfBoundsException 为什么?

标签 java sorting

好吧...我正在尝试实现我自己版本的 bin 排序,最常见的是桶排序。我运行该程序并收到一个 indexOutOfBounds 错误。我不知道为什么。有人可以解释一下原因吗?请注意,binsort 算法尚未完成。 Int n 是数组的长度,m 是随机数生成器生成的列表的上限,范围为 0 到 100。

public static void binSort (int []array, int n, int m)
{
//create upperbounds
int x = m / 3;                    //33
int y = n - x;                    //67
int z = n;                        //100

int []temp1 = new int [n-1];
int []temp2 = new int [n-1];
int []temp3 = new int [n-1];

for (int i: array)
{
    if(array[i] < x)
    {
        temp1[i] = array[i];
    }
    else if(array[i] < y)
    {
        temp2[i] = array[i];
    }
    else
    {
        temp3[i] = array[i];     
    }
}

for ( int j = 0; j <= x; j++)
    array[j] = temp1[j];
for ( int k = x + 1; k <= y; k++)
    array[k] = temp2[k];
for ( int l = y + 1; l <= z; l++)
    array[l] = temp3[l];

}

最佳答案

其中存在对增强型循环的轻微误用。

for (int i: array)

这里,i不是索引,而是array的一个元素。每次 for 迭代时,它都会自动为您执行此操作:

for(int index = 0; index < array.length; index++) {
    int i= array[index];

长话短说,for 会为您处理迭代,您只需使用 i 元素即可。

关于java - IndexOutOfBoundsException 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12805320/

相关文章:

php - 如何通过 PHP 中的内部数组的字段之一对多维数组进行排序?

MySQL按2个参数排序

java - 未在hadoop上调用Map函数

java - JTable 单元格中的 CSS 样式

c++ - 使用计数器变量测量运行时间

c - 我需要帮助找出以下代码片段中的错误以对堆栈进行排序

java - 在java中对键/值列表进行排序的最快方法

java - 从 java 调用 Soap Webservice(用 C# 编写)

java - 添加到数组时强制关闭

java - Jtable更新选中行