我正在尝试创建一个推送方法,该方法将首先放置任何给定的元素,并将已经存在的元素进一步推送到数组中。
首先,我创建了一个方法来增加数组的大小并进一步插入已经存在的元素。
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] 处所谓的空白空间。
main方法中的代码如下:
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 , 空 ,
2、7、空、空、
考虑到第二次尝试给出了正确的打印输出,循环是否存在一些简单的错误?
最佳答案
您没有将旧数组复制到新数组。您只复制第一个元素:
改变
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;
}
关于java - Push 方法给出 null 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27800438/