我无法弄清楚为什么我的代码不允许我从列表中删除值。我想让列表中包含10个值,然后当我想取出一个值并替换它时,我使用remove()然后使用add()。我的错误是这样的:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9
at MyList.remove(MyList.java:36)
at MyListDriver.main(MyListDriver.java:17)
这是这些部分的代码:
public class MyListDriver{
public static void main(String[] args){
MyList alpha = new MyList(9);
alpha.add("22");
alpha.add("2");
alpha.add("1");
alpha.add("22");
alpha.add("13");
alpha.add("6");
alpha.add("7");
alpha.add("32");
alpha.add("172");
alpha.add("2");
alpha.remove("12");
alpha.add("23");
alpha.print();
}
}
MyList中的一部分是remove(),这是我收到错误的地方。
public void remove(String data){
int index = 0;
for(int r = 0; r <=arr.length; r++)
{
if(arr[r].equals(data)){
index=r;
break;
}
}
remove(index);
}
public void remove(int index){
if(index>=0 && index<loc){
for(int i=index; i<loc-1; i++){
arr[index]=arr[index+1];
}
loc--;
}
}
我想有一个重载的remove方法。我不知道为什么我得到一个数组超出范围错误。
谢谢您的任何帮助。
答案 0 :(得分:2)
我知道你有答案
for(int r = 0; r <=arr.length; r++)
{
if(arr[r].equals(data)){
index=r;
break;
}
}
您为什么得到ArrayIndexOutOfBoundsException
因为当Ex = r = arr.lenght时。数组长度为3表示0 1 2
当r = 3时,由于3 <= 3,该条件重新调整为真
for(int r = 0; r < arr.length; r++)
{
if(arr[r].equals(data)){
index=r;
break;
}
}