我正在尝试创建一个push方法,该方法将首先放置任何给定元素,并在数组中进一步推送已存在的元素。
首先,我创建了一种方法来增加数组的大小并进一步推送已存在的元素。
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;
}
在arr [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 ,
如果第二次尝试给出正确的打印输出,那么循环是否存在简单的错误?
答案 0 :(得分: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;
}