Java - Добавить элемент в массив - PullRequest
1 голос
/ 15 декабря 2011

Огляделся, не смог найти похожих вопросов в 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 ]

2 голосов
/ 15 декабря 2011

Ваша проблема в этом цикле:

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

Он записывает i+1 в i - т.е. он перемещает элемент вниз - вам нужно переместить их вверх . Чтобы двигаться вверх, вам нужно выполнить итерацию вниз (в противном случае вы перезаписываете только что написанное).
Попробуйте это:

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

Обратите внимание, что это освободит место для вставки на pos, потеряв (перезаписав) последний элемент.

0 голосов
/ 15 декабря 2011
myArray[i+1] = myArray[i];

Может быть, это вам поможет.

...