2015-01-06 3 views
0

Я пытаюсь создать метод push, который сначала поместит любой данный элемент и добавит уже существующие элементы в массив.Метод push дает значение null

Прежде всего, я создал метод увеличения размера массива и дальнейшего продвижения уже существующих элементов.

private void newBiggerObj(){ 
    Object[] temp = new Object[arr.length+1]; 
    for (int i = 0; i<arr.length; i++){ 
     if (i == 0){ 
      temp[i+1] = arr[i]; 
     } 
    } 
    arr = temp; 
} 

Я тогда с помощью этого метода внутри:

public void push(Object element) { 
    newBiggerObj(); 
    arr[0] = element; 

} 

Назначение нового элемента на якобы пустого пространства в обр [0].

Следующий код в основном методе:

 hej.push(3); 
    System.out.println(hej.toString()); 
    hej.push(4); 
    System.out.println(hej.toString()); 
    hej.push(7); 
    System.out.println(hej.toString()); 
    hej.push(2); 
    System.out.println(hej.toString()); 

дает мне распечатку:

3 , 4 , 3 , 7 , 4 , null , 2 , 7 , null , null ,

Есть ли что-то просто неправильно с петлей, учитывая, что вторая попытка дает право распечатать?

ответ

1

Вы не копируете старый массив в новый массив. Вы только скопировать первый элемент:

Изменить

private void newBiggerObj(){ 
    Object[] temp = new Object[arr.length+1]; 
    for (int i = 0; i<arr.length; i++){ 
     if (i == 0){ 
      temp[i+1] = arr[i]; 
     } 
    } 
    arr = temp; 
} 

в

private void newBiggerObj(){ 
    Object[] temp = new Object[arr.length+1]; 
    for (int i = 0; i<arr.length; i++){    
     temp[i+1] = arr[i]; 
    } 
    arr = temp; 
} 
+0

Это условие было от более ранней попытки. Удаление этого исправлено. Благодаря! –

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