我在使用此方法时遇到问题。该方法位于一个名为vectorOfDogs
的文件中,它说的是,假设通过传递给它的标签号删除特定的狗,然后将所有内容向上推。推后,应该减小尺寸。这种方法在下面的注释行上给了我arrayIndexOutOfBoundsException
。任何帮助将不胜感激。
Dog[] theDogs = new theDogs[capacity]
public void deleteDog(int tgNm) {
for (int i=0; i<size; i++) {
if (theDogs[i].getTagNumber() == tgNm) {
for (int j=i; j<size; j++) {
theDogs[j] = theDogs[i+1]; //this line gives an exception
i--;
}
}
}
System.out.println("the dog has been deleted");
}
最佳答案
您的代码中存在三个问题:
您不应该在嵌套循环内修改i
到达size-1
后,您应该停下来,因为您将元素放在index+1
您应将最后一项设置为null
解决方法如下:
if (theDogs[i].getTagNumber() == tgNm) {
for (int j=i; j<size-1; j++) {
theDogs[j] = theDogs[j+1];
}
theDogs[--size] = null;
i--;
}
将最后一项设置为
null
可以防止无限循环,以防您删除最后一条狗。