我是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) 我只是无法阅读和理解错误!
答案 0 :(得分:4)
这是错误:
for(int i=0; i<5; i++) {
temp = arr[i+1];
// ^^^
// Right here!
...
}
当i
等于4
时,i+1
为5
,超过了数组的末尾。
这种错误很常见,它有自己的名字:它叫做Off By One Error。当你在循环中看到ArrayIndexOutOfBoundsException
时,你要找的第一件事是这种错误。
答案 1 :(得分:2)
你的数组长度为5,索引从0开始。这意味着你的最大索引是4,但是你试图在你的for循环中使用索引5访问你的数组:
temp = arr[i+1];