Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 数组的删除算法_Java_Arrays_Algorithm - Fatal编程技术网

Java 数组的删除算法

Java 数组的删除算法,java,arrays,algorithm,Java,Arrays,Algorithm,所以我有这个方法,如上所述,第一个参数是数组的名称,第二个是我想要删除的值,第三个是可以找到它的索引。例如: Deletion(int array[ ], int delete, int position) 在本例中,我选择的数组称为list,我要删除的值为50,该值所在的索引为4 如果我们要使用删除(list,50,4),这个方法应该用索引为5的元素替换索引为4的50,并用索引为6的元素替换索引为5的元素,依此类推 如果这是数组列表:90765548506966528756899186735

所以我有这个方法,如上所述,第一个参数是数组的名称,第二个是我想要删除的值,第三个是可以找到它的索引。例如:

Deletion(int array[ ], int delete, int position)
在本例中,我选择的数组称为list,我要删除的值为50,该值所在的索引为4

如果我们要使用
删除(list,50,4)
,这个方法应该用索引为5的元素替换索引为4的50,并用索引为6的元素替换索引为5的元素,依此类推

如果这是数组列表:9076554850696652875689918673506852755445

输出应为:90765548696652875689918673506852755445

然而,我只能用它来代替50,而不是其他任何一个数字

这是我得到的输出:9076554869696652875689918673506852755445

50替换为69,但其他元素保持不变,我需要其他元素“移动”到左侧

以下是我的删除方法代码:

Deletion(list,50,4);
对于(int i=array.length-1;i position
,我得到以下错误:

java.lang.ArrayIndexOutOfBoundsException:20


这就是我被卡住的地方。请帮助!

您需要重新定义
I
的值,以便将其初始化为位置的int值(以便您的删除/替换过程可以从那里开始)

for(int i=position;i

您的
i.max_值
应该是
array.length-2
,这样
i
将递增直到数组结束。它不应该是-1,因为您实际上是在删除数组的最后一个索引(因为该值没有任何内容)

您最好使用
System.arraycopy
来实现自己的移动数组元素的算法。如下所示:

for (int i = position; i < array.length - 2; i++)
{
    array[i] = array[i+1];
}
另见这个问题:

for (int i = position; i < array.length - 2; i++)
{
    array[i] = array[i+1];
}
System.arraycopy(array, position+1, array, position, array.length-position);