排序数组时出现java.lang.ArrayIndexOutOfBoundsException

时间:2014-08-28 20:10:46

标签: java exception

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

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) 我只是无法阅读和理解错误!

2 个答案:

答案 0 :(得分:4)

这是错误:

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

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

这种错误很常见,它有自己的名字:它叫做Off By One Error。当你在循环中看到ArrayIndexOutOfBoundsException时,你要找的第一件事是这种错误。

答案 1 :(得分:2)

你的数组长度为5,索引从0开始。这意味着你的最大索引是4,但是你试图在你的for循环中使用索引5访问你的数组:

 temp = arr[i+1];