当前位置: 首页 > 知识库问答 >
问题:

ArrayList InsertionSort问题

韦业
2023-03-14

我试图用arraylist创建一个插入排序程序,但在其中的一些内容上出现了错误。

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

异常在线程"main"java.lang.IndexOutOfBounds异常:索引: 5,大小: 5在java.util.ArrayList.range检查(ArrayList.java:635)在java.util.ArrayList.get(ArrayList.java:411)在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)); 
        }


    }

}

共有2个答案

严俊彦
2023-03-14

List是一种基于零的数据结构(链接的Javadoc部分表示,如果索引超出范围(index),它会抛出一个IndexOutOfBoundsException

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

for (c = 0; c < InsertionSort.size(); c++) {
    lock = InsertionSort.get(c); 

此外,按照惯例,变量名以小写字母开头。所以InsertionSort应该是InsertionSort(或者只是insertionList)。最后,您可以在Java 7中使用diamond操作符,并且应该编程到列表接口。比如,

List<Integer> insertionList = new ArrayList<>();
吉玉石
2023-03-14
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);
 类似资料:
  • 问题内容: 包括: all Spring libs, Apache Tomcat 7.0 library 在构建路径中 但它仍然给出错误: 在“ org.sprintframework.web-3.1.0.M1.jar”中,我可以看到“ org.springframework.web.context.ContextLoaderListener”。 Google上的某个人说应该包含spring.ja

  • 问题内容: 我使用非常简单的代码返回XML 但是,出现以下错误 请帮忙。谢谢 问题答案: 运行时出现NoSuchMethodError表示你使用的库版本与生成代码所针对的版本不同。 在你的情况下,Spring是元凶。在运行时检查类路径上的内容,并确保以下各项: 版本与编译时间罐相同 如果存在多个版本,请删除不需要的版本

  • 问题内容: 我不明白注释和之间的实际区别是什么? 扩展名还是它们具有完全不同的含义?什么时候应该使用它们?在服务层中使用Spring ,在DAO 中使用javax? 谢谢回答。 问题答案: 几年前,Spring定义了自己的Transactional注释以使Spring bean方法具有事务性。 Java EE 7终于做了同样的事情,现在除了EJB方法外,还允许CDI bean方法是事务性的。因此,

  • 我在CentOS虚拟机中安装了RabbitMQ,该虚拟机的网络适配器被定义为Bridge。我正在尝试配置RabbitMQ管理,以便通过机器的IP地址访问WebApp。配置如下:

  • 这个FAQ的最新版本总是可以从Apache主站点得到,位于<http://httpd.apache.org/docs/2.2/faq/> 如果你的问题在这里没有找到答案,你也可以看看Apache 1.3 FAQ ,看你的问题是否在那里有了答案。 主题 背景 关于 Apache HTTP Server 的背景知识。 支持 我遇到问题该怎么办? 错误信息 这些错误信息是什么意思? 背景 什么是Apac

  • 发布问题 更新问题 设置问题悬赏 获取问题列表 获取一个问题详情 删除一个问题 获取用户发布的问题列表 发布问题 POST /questions 输入 字段 类型 描述 subject 字符串 必须,问题主题或者说标题,不能超过 255 字节 ,必须以 ? 结尾。(不区分全角或者半角) topics 数组 必须,绑定的话题,数组子节点必须符合 { "id": 1 } 的格式。 body 字符串

  • 问题内容: 我简直不敢相信我网站上正在发生的事情。当我添加此行时: 一切正常。如果我不这样做,CSS就会“混乱”,一切都会变得不同,布局也会变得“丑陋”。 这条线如何解决所有问题? 问题答案: 您正在将HTML与XHTML混合使用。 通常,声明用于区分HTMLish语言的版本(在这种情况下为HTML或XHTML)。 不同的标记语言将表现不同。我最喜欢的例子是。在浏览器中查看以下内容: XHTML

  • 我试图在fabric rocket chat上联系,但没有得到太多帮助,因此在SO上发布了它。我有以下疑问: 我们是否可以在链码内访问块高度(我知道这在客户端是可行的,但在链码内是否可能) 可以从链码中的正在进行的事务调用新事务吗? 想知道hyperledger Fabric中存储的数据的历史记录在哪里 我们可以根据链码中的transactionid进行查询吗? 在fabric链码中编写调度程序是