gpt4 book ai didi

java - 如何使用非法索引访问数组

转载 作者:行者123 更新时间:2023-11-29 04:31:52 24 4
gpt4 key购买 nike

我是 java 的新手,正在编写一个程序来删除具有特定位置的元素。我知道有很多可能的答案,但我正在尝试自己的答案。我收到错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9
at
Array.DeleteElement.delete(DeleteElement.java:24)
at
Array.DeleteElement.main(DeleteElement.java:14)

现在我在这里传递数组和位置。它在哪里获得不正确的索引。根据文档,它说数组已被非法索引访问。任何人都可以解释一下这是非法的以及我在哪里出错了。

public static void main(String[] args) {
Scanner in = new Scanner(System.in);
//int[] delArray = new int[15];
int[] delArray = {20,50,60,9,8,7,1,5,3};
System.out.println("Enter Element you want to delete");
int del = in.nextInt();
int pos = InsertSearch.searchKey(delArray,del);
System.out.println(pos);
if(pos != -1){
delete(delArray,del,pos);
for(int i=0; i<delArray.length; i++)
System.out.println(delArray[i]);
}
else
System.out.println(del+"Not exist in array");
}

public static int delete(int delArr[], int del, int pos){
for(int i=pos; i<delArr.length; i++)
delArr[i] = delArr[i+1];
return delArr.length -1;
}

最佳答案

看,

public static int delete(int delArr[], int del, int pos){
for(int i=pos; i<delArr.length; i++)
delArr[i] = delArr[i+1]; //<---- HERE
return delArr.length -1;
}

在此循环中,i 上升到数组的最大索引,但在内部,您访问第 i+1 个元素,在这种情况下会导致 IndexOutOfBoundsException 被抛出。

从堆栈跟踪中,您可以看到,您尝试访问第 9 个元素,但您的数组只有从 0 到 8 的索引,包括在内。

关于java - 如何使用非法索引访问数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43478123/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com