Java 如何使用非法索引访问数组
我是java新手,正在编写一个程序来删除具有特定位置的元素。我知道有很多可能的答案,但我在这里尝试我自己的。 我得到一个错误:Java 如何使用非法索引访问数组,java,arrays,Java,Arrays,我是java新手,正在编写一个程序来删除具有特定位置的元素。我知道有很多可能的答案,但我在这里尝试我自己的。 我得到一个错误: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9 at Array.DeleteElement.delete(DeleteElement.java:24)
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;
}
publicstaticvoidmain(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
//int[]delArray=新int[15];
int[]delArray={20,50,60,9,8,7,1,5,3};
System.out.println(“输入要删除的元素”);
int del=in.nextInt();
int pos=InsertSearch.searchKey(delArray,del);
系统输出打印项次(pos);
如果(位置!=-1){
删除(delArray、del、pos);
对于(inti=0;i此处
当i
等于8
时,i+1
给出9
,这将生成异常外观
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;
}
公共静态int-delete(int-delArr[],int-del,int-pos){
对于(inti=pos;i来说,这段代码是个问题
for(int i=pos; i<delArr.length; i++)
delArr[i] = delArr[i+1];
for(int i=pos;iOh..明白了。这意味着当它尝试访问最后一个索引时,del[i+1]
没有得到。完美的解释。谢谢。很抱歉,我不知道如何读取堆栈跟踪。任何关于堆栈跟踪的链接都会有帮助。@shankysingh Ya,我得到了想要的结果。8分钟后将接受答案:)@shankysingh很酷,谢谢。另外,专业提示-使用括号,即使它们不是强制性的。包装{单线}
for(int i=pos; i<delArr.length; i++)
delArr[i] = delArr[i+1];