我正在尝试在数组中插入一个元素。我的方法应该将数组的大小增加一个,并将元素插入适当的位置。问题:它在适当的位置添加元素并扩展数组,但它删除了斑点中的原始元素并插入null。 我的代码:
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];
}
}
数组输出:
> 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 }
关于我为什么要失去Monica或者我将如何修复它的任何建议。
答案 0 :(得分:4)
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;
}
答案 1 :(得分:-1)
你做了一个:
name.insert(3, new Person("David", 4))
将“David”插入第3位并覆盖“Monica”!