Java - 向数组添加元素

时间:2011-12-15 01:32:41

标签: java arrays position element add

环顾四周,在java中找不到任何类似的问题..

基本上我需要在特定位置索引

中的int数组中添加一个数字

我只能使用数组,不能使用ArrayLists

这是我到目前为止所做的,我知道为什么它不起作用,但我无法弄清楚如何解决覆盖问题,我不希望这样做。

该任务是一个非覆盖插入。例如最终结果将是

[1 2 1337 3 4 5 6 7 8]

以下是代码段:

public void main(String[] args)
{
int[] array = {1,2,3,4,5,6,7,8};
array = add(array, 2, 1337);
for(int i : array)
    System.out.print(i + " ");
}


public int[] add(int[] myArray, int pos, int n)
{
    for (int i = pos; i<myArray.length-1; i++){
        myArray[i] = myArray[i+1];
    }
    myArray[pos] = n;
    return myArray;
}

2 个答案:

答案 0 :(得分:2)

你的问题就是这个循环:

for (int i = pos; i<myArray.length-1; i++){
    myArray[i] = myArray[i+1];
}

它正在将i+1写入i - 即它将元素向下移动 - 您需要将它们向上移动。为了向上移动,你需要迭代 down (否则你会覆盖你刚写的东西)。
试试这个:

for (int i = myArray.length - 1; i > pos; i--) {
    myArray[i] = myArray[i - 1];
}

请注意,通过丢失(覆盖)最后一个元素,这将为pos的插入腾出空间。

答案 1 :(得分:0)

myArray[i+1] = myArray[i];

也许这会对你有帮助。