对数组进行排序时出现 java.lang.ArrayIndexOutOfBoundsException

标签 java exception

我是 Java 的绝对初学者。最近我开始用 Java 编写代码来对数组的 5 个元素进行排序。用户将输入数组元素。它遵守代码并运行程序。但是一旦我完成输入数组元素,程序就会崩溃! 这是我的代码:

import java.util.Scanner;
public class Main
{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        int[] arr;
        arr = new int[5];
        System.out.println("Enter the 5 elemnts in the array");
        for(int i=0; i<5; i++)
            arr[i] = in.nextInt();
        int temp;
        for(int i=0; i<5; i++)
        {
            temp = arr[i+1];
            for(int j=i+1; j>=0; j--)
            {
                if(arr[i] > temp)
                {
                    arr[j] = temp;
                    arr[i] = arr[j];
                }
            }
        }       
    }
}

它抛出一个类似这样的错误: 线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException: 5 在 Main.main(Main.java:16) 我只是无法阅读和理解错误!

最佳答案

这里是错误:

for(int i=0; i<5; i++) {
    temp = arr[i+1];
    //         ^^^
    //   Right here!
    ...
}

i等于4时,i+15,超过了数组。

这种错误是如此常见,以至于它有自己的名字:叫做Off By One Error。 .当您在循环中看到 ArrayIndexOutOfBoundsException 时,您首先要查找的是此类错误。

关于对数组进行排序时出现 java.lang.ArrayIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25557183/

相关文章:

java - 总是出现 NotSerializedException 异常 (Java) - 序列化不起作用

Java将日期转换为sql时间戳

java - 多个服务之间的 CQRS 事件

exception - 捕获代号一中的 NetworkManager 异常

python - 如何使用抛出异常方法终止线程 - Python

c++ - 在 VB.Net 中使用 C++ dll 时出现异常

java - 通过 IntellIj 运行 gradle 应用程序

java - 如何仅使用零参数构造函数通过 Java 反射创建具有上下文绑定(bind)的 Scala 类的新实例?

java - 编译器生成的相对地址以及它们如何在(最好是 java)字节码中表示?

python - 处理 Python 中其他库导入的库异常的最佳实践?