Deletion(int array[ ], int delete, int position)
所以我有这个方法,见上文,第一个参数是数组的名称,第二个是我想删除的值,第三个是可以找到它的索引。例如:
Deletion(list,50,4);
在这种情况下,我选择的数组称为list,我想删除的值是50,值所在的索引是4.
如果我们使用Deletion(list,50,4)
,则此方法应该将索引为4的50替换为索引为5的元素,将索引为5的元素替换为索引处的元素6等等。
如果这是阵列列表:90 76 55 48 50 69 66 52 87 56 89 91 86 73 50 68 52 75 54 45
输出应为:90 76 55 48 69 66 52 87 56 89 91 86 73 50 68 52 75 54 45 45
但是,我只能用它取代50而不是任何其他数字。
这是我得到的输出:90 76 55 48 69 69 66 52 87 56 89 91 86 73 50 68 52 75 54 45
50替换为69,但其他一切保持不变,我需要其他元素“向左移”。
这是我目前为删除方法的代码:
for (int i=array.length-1; i<position; i ++)
array[i] = array[ i+1];
array[position] = array[position+1]
列表的长度为20,减去1,因此i = 19
。我知道19不小于4所以它跳过了for循环,但是如果我做了i > position
,我就会收到这个错误:
java.lang.ArrayIndexOutOfBoundsException:20
所以这就是我被困住的地方。请帮忙!
答案 0 :(得分:1)
您需要重新定义i
的值,以便将其初始化为位置的int值(以便您的删除/替换过程可以从那里开始)。
for (int i = position; i < array.length - 2; i++)
{
array[i] = array[i+1];
}
您的i.max_value
应为array.length-2
,以便i
逐渐增加,直到数组结束。它不应该是-1,因为您基本上删除了数组的最后一个索引(因为该值没有任何内容)
答案 1 :(得分:0)
您最好使用System.arraycopy
来实现自己的移动数组元素算法。像这样:
System.arraycopy(array, position+1, array, position, array.length-position);