Java 如何覆盖数组中的位置?

Java 如何覆盖数组中的位置?,java,arrays,Java,Arrays,我有一个方法,它使用具有特定数量的局部的数组。我要求用户输入要开始覆盖的位置号。我的对象数组在局部中有其他对象。我不确定我对j变量所做的是否正确。以下是我在局部移动对象的方法 public void overwriteArray(int number) { for (int i=0; i<array.length ; i++) { if (i ==(number-1) { for(int j = i ; j<array.length ; j++) {

我有一个方法,它使用具有特定数量的局部的数组。我要求用户输入要开始覆盖的位置号。我的对象数组在局部中有其他对象。我不确定我对j变量所做的是否正确。以下是我在局部移动对象的方法

public void overwriteArray(int number) {
  for (int i=0; i<array.length ; i++) {
    if (i ==(number-1) {
      for(int j = i ; j<array.length ; j++) {
        array[j] = array[j+1];
      }
    }
  }
}
public void overwriteArray(整数){

对于(int i=0;i您的外循环在孔阵列上迭代,并且仅当
i==(number-1)
时才执行内循环,因此迭代的
array.length-1
是免费的

您可以将外部for循环与if(i==(number-1){
一起去掉,而在最后一次迭代中为(int j=(number-1);j编写
。也许您只想一直到
array.length-1

此外,为了避免出现
arrayindexoutofbounds异常
您应该在迭代之前确保
number
[1,array.length]
范围内

以下是您可能看到的情况:

@Test
public void overwritearrayay() {
    String[] array = {"foo", "bar", "foobar"};
    log(Arrays.toString(array));
    overwritearrayay(array, 1);
    log(Arrays.toString(array));
}

public void overwritearrayay(String[] array, int n) {
    if(n > 0 && array != null && n <= array.length) {
        for(int i = n-1; i < array.length-1; i++) {
            array[i] = array[i+1];
        }
        array[array.length-1] = null;
    }
}

public static void log(String string) {
    System.out.println(string);
}

如果我理解得很好:您希望删除由输入参数
number
描述的元素,并将其余元素向左移动。此外,末尾的元素在所有移动中都保持不变。number是要删除的元素的编号,因此1表示要删除第一个元素,表示数组中0**的**索引,对吗

那么,您的代码似乎可以正常工作,但不需要外部循环。至少:

public void overwriteArray(int number) {
  for(int j = number-1 ; j<array.length ; j++) {
    array[j] = array[j+1];
  }
}
它在相同的src和dest上工作:

如果src和dest参数引用相同的数组对象,则执行复制时,就好像位置srcPos到srcPos+length-1处的组件首先复制到具有长度组件的临时数组,然后临时数组的内容通过目标arr的destPos+length-1复制到位置destPos一样嗯


看起来你想要的是一个
列表
而不是一个数组。是的,arshaji是对的,列表可以提供这种功能(还有更多)马上…但我必须使用一个数组,它的指定方式是D:@Pony。
number
是正常的人类计数,即
1,2,3,
,还是索引,即
0,1,2,
正常人类计数,目前还不清楚counting@ppeterka66你是说;-)我不知道API是怎么背的:/在我的IDE中,我从
Arrays.asS
开始,点击
Ctrl+space
自动完成(类比
Arrays.asList(…)
),它什么都没有给我。。。
public void overwriteArray(int number) {
  for(int j = number-1 ; j<array.length ; j++) {
    array[j] = array[j+1];
  }
}
public void overwriteArray(int number) {
    System.arraycopy(array, number, array, number-1, array.length-number);
}