2011-12-15 10 views
1

огляделась, не смогли найти подобные вопросы на Яве ..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; 
} 
+4

Это домашнее задание? * «Я не могу понять, как исправить эту проблему». * В чем проблема? Обратите внимание, что «не работает» бесполезно для описания проблемы. Какова ваша лучшая * теория * по ее решению? [Что вы пробовали?] (Http://mattgemmell.com/2008/12/08/what-have-you-tried/) –

+1

Вы имеете в виду непереписывающую вставку? например конечным результатом будет [1 2 1337 3 4 5 6 7 8]? – Bill

+0

эта проблема, будучи фактом, что она не добавляет ее в массив, и это была моя лучшая теория по ее решению ... @Bill Да – user1062898

ответ

2

Ваша проблема заключается в этом цикле:

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

Это был именно то, что мне нужен был в этом цикле, теперь я могу продолжить свой проект благодаря! – user1062898

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

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

+0

. Это заменит остальную часть массива myArray [i], которая перезаписывает данные. – user1062898

Смежные вопросы