I am trying to insert an element in an array. My method is supposed to increase the the size of the array by one and insert the element in the proper spot. The issue: It adds the element in the proper spot and extends the array, but it gets rid of the original element in the spot and inserts a null. My code:
public void insert(int point, Person person){
Person [] newList = new Person[this.size()+1];
for(int i = 0; i < point; i++){
newList[i] = list[i];
}
newList[point] = person;
for(int i = point+1; i<this.size(); i++){
newList[i] = list[i];
}
this.list = new Person[this.size()+1];
for(int i = 0; i <this.size(); i++){
list[i] = newList[i];
}
}
The array output:
> FBArrayList name = new FBArrayList()
[DrJava Input Box]
> name.list[0] = new Person("Emma", 7)
Person@20a3d02a
> name.list[1] = new Person("Daniel", 8)
Person@6e8a93de
> name.list[2] = new Person("Bradley", 9)
Person@327556d1
> name.list[3] = new Person("Monica", 1)
Person@3d886c83
> name.list[4] = new Person("Connor", 2)
Person@76b41f9c
> name.list[5] = new Person("Fedor", 3)
Person@462a5d25
> name.insert(3, new Person("David", 4))
> for(int i = 0; i<7; i++){
System.out.println(name.list[i].getName());
}
Emma
Daniel
Bradley
David
Connor
Fedor
java.lang.NullPointerException
> name.list
{ Person@20a3d02a, Person@6e8a93de, Person@327556d1, Person@1d1a8b9, Person@76b41f9c, Person@462a5d25, null }
Any suggestions about why I am losing Monica or how I might go about fixing it.
listat the end and copying over the contents ofnewList, why not just dolist = newList?