Как это то, что вы должны выполнить сами, я буду только обеспечить способ его реализации, а не код:
Если вы должны установить номер в позиции index
, вы бы перезаписали значение, которое было там ранее. Так что вам нужно сделать, это переместить каждый элемент на одну позицию к концу массива, начиная с index
: num[x]
становится num[x+1]
и т.д.
Вы обнаружите, что вам нужно сделать это в обратном порядке, в противном случае вы будете заполнять ваш массив со значением в num[index]
.
В ходе этого процесса вам нужно будет решить, что делать с последней записью массива (num[num.length - 1]
):
- Вы можете просто переписать его, отбрасывая значение
- Вы можете вернуть его из функция
- Вы могли бы бросить исключение, если она отлична от нуля
- Вы можете создать новый массив, который является 1 запись больше, чем текущий массив вместо того, чтобы сохранить все значения
- и т.д.
После этого вы дублировали num[index]
: значение присутствует в num[index+1]
, тоже, как вы переместили его.
Теперь можно записать новое значение в нужное положение без переопределения существующего значения.
EDIT
У вас есть несколько ошибок в коде:
- You прибавка
k
, нужно, чтобы декремента его (k--
, не k++
)
- Вы изменить
k
снова в вашем тесте цикла: он обновляется дважды в каждом цикле
- Если вы начинаете с
k = num.length
, вы будете пытаться написать на num[num.length + 1]
, что не возможно
малоизвестный факт, вы можете использовать Arrays.binarySearch найти индекс, где вы должны вставить его (http://docs.oracle.com/javase/6/docs/api/java/util/Arrays .html). –
Вы на правильном пути с тем, что вы пробовали, но после копирования над значением, которое вы хотите добавить, вам нужно добавить конец исходного массива. – DukeOfMarmalade