我正在尝试添加通过方法调用从数组中删除项的功能,但遇到了标题中发布的问题。
说明如下:
为arrayintlist类编写一个名为remove的新方法,该方法采用整数索引并删除给定索引处的值,然后将后续值向左移动。例如,如果名为list的变量存储以下值:
[3, 19, 42, 7, -3, 4]
进行此方法调用后:
“列表。删除(1);”将从数组中删除3(不是这不特定于数组的第一个值)
我试图实现这样的目标:
public void remove(int index) {
int target = index;
int[] elementDataCopy = new int[size];
size = elementData.length;
if (index < 0 || index >= size) {
throw new IllegalArgumentException("invalid index");
}
//loop through each value until the index given is == to loop value
//create a copy of elementData where length is one less and value at
//index given is not present
//each time something is removed, the tracked values decrease by one
size--;
for(int i = 0; i < elementData.length + 2; i++){
if (elementData[i] == target){
continue;
}else{
elementDataCopy[i] = elementData[i];
}
}
}
``
but get this error:
失败:索引12超出长度12的界限
with the numbers differing depending on what input is.
note that elementData is an array of ints and index is an int that is pointing at a point in said array
all help is appreciated, pretty sure this is something basic
1条答案
按热度按时间xqkwcwgp1#
像这样试试。最大的错误是使用
i
对于源索引和目标索引。用一个单独的(k
这里)目的地。仅在复制时增加目标索引。完成后,将elementdatacopy重新分配给elementdata。