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.
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;
// this part copies the remainder of the original list to the new list after
// your inserted entry
for(int i = point; i < this.size(); i++){
newList[i+1] = list[i];
}
this.list = newList;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With