java - ArrayList插入排序问题

标签 java arrays list sorting insertion

我正在尝试使用数组列表制作插入排序程序,但其中的某些内容出现错误。

每当我尝试运行我的程序时,它都会说:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 5, Size: 5 at java.util.ArrayList.rangeCheck(ArrayList.java:635) at java.util.ArrayList.get(ArrayList.java:411) at NewInsertionSort.main(NewInsertionSort.java:20)

但我不明白我在哪里称其为“越界”。

接下来,它说我的局部变量“k”的值从未被使用过,但它应该......

如果有人能帮助我,那就太好了,谢谢您的支持。

这是我的代码:

import java.util.ArrayList;


public class NewInsertionSort {

    public static void main(String[] args) {

        ArrayList <Integer> InsertionSort = new ArrayList <Integer>(); 
        InsertionSort.add(1);
        InsertionSort.add(52);
        InsertionSort.add(21);
        InsertionSort.add(45);
        InsertionSort.add(27); 


        Integer a; 
        Integer lock; 
        Integer c; 
        for (c = 1; c < InsertionSort.size(); c++);{
            lock = InsertionSort.get(c); 
            System.out.println(lock); 


            for (a = c - 1; (a >= 0) && (InsertionSort.get(a) < lock); a--){
                 Integer k = InsertionSort.get(a+1); 
                 Integer h = InsertionSort.get(a);

                 k = h;   
            } 
            lock = InsertionSort.get(a+1);  

        }

        for(int z=0;z < InsertionSort.size(); z++){
            System.out.println(InsertionSort.get(z)); 
        }


    }

}

最佳答案

for (c = 1; c < InsertionSort.size(); c++) --> ; <-- {
            lock = InsertionSort.get(c); 
            System.out.println(lock); 

问题是你有一个“;”在 for 循环的结束 ')' 后面。这也是它告诉您变量 k 未被使用的原因。

根据评论更新:

GET 方法仅返回“a”位置下的值。所以你的“k”和“h”变量只是数字。它们不指向任何地方。如果您想将“a”的值分配给“a+1”的值,您必须执行以下操作:

insertionSort.set(a+1, h);

关于java - ArrayList插入排序问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34965235/

相关文章:

javascript - 获取表中的所有div到数组

c++ - 列表元素被替换而不是插入

java - FirebaseInstanceIdService 已弃用,我在重写代码时迷失了方向

java - Hibernate:如何根据特定条件从另一个实体获取或加载惰性实体?

java - Android 应用程序名称不显示在所有 Activity 中

php - 在 PHP5 中运行 PHP7 的代码有哪些替代方案

arrays - 对于数组 A [0...N-1],在没有两个非零元素的差 > M 之前,我必须将元素递减多少次?

java - Jetty 7.4.5 服务器在 useFileMappedBuffer = true 时泄漏文件描述符

WPF 数据网格选择问题

java - 检查 List<SelectItem> 在 java 中是否包含这部分字符串