为什么我的插入排序代码不起作用?这是给arrayindexoutofboundsexception

slwdgvem  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(341)

这个问题在这里已经有答案了

是什么导致java.lang.arrayindexoutofboundsexception以及如何防止它(26个答案)
18天前关门了。
我正试着做插入排序,但它不能正常工作。
我是按要求做的,但还是有错误。
任何关于我做错了什么的建议。
请帮忙,我是编程新手。

package practicepkg;

public class InsertionDemo {
    public static void main(String[] args) {
        int a[] = {10, 2, 3, 45, 66};

        int count = 1, temp = 0;
        int i, j, key;
        for (j = count; j < 4; j++) {
            key = j;
            if (key < 4 && temp < 4) {
                for (i = temp; i >= 0; i--) {
                    if (a[key] < a[i]) {
                        int n = a[key];
                        a[key] = a[i];
                        a[i] = n;
                    }
                    key++;
                }
                temp++;
                count++;
            } else {
                break;
            }
        }
        for (int k = 0; k < 4; k++) {
            System.out.println("Sorted array is " + a[k]);
        }
    }
}

线程“main”java.lang.arrayindexoutofboundsexception中出现异常:索引5超出长度5的界限
    在practicepkg.insertiondemo.main(insertiondemo。java:17)

yvfmudvl

yvfmudvl1#

您正在为j的值赋值,j的值应该被赋值 a[j] . 进一步将大小替换为5或数组大小,同时消除count和temp变量。更正后的代码如下:

public class InsertionDemo {
    public static void main(String[] args) {
        int a[] = {10, 2, 3, 66, 45};
        int i, j, key;
        for (j = 1; j < a.length; j++) {
            key = a[j];
            for (i = j - 1; (i >= 0 && a[i] > key); i--) {
                a[i + 1] = a[i];
            }
            a[i + 1] = key;
        }
        for (int k = 0; k < a.length; k++) {
            System.out.println("Sorted array is " + a[k]);
        }
    }
}

相关问题