java - Push 方法给出 null 值

标签 java object null

我正在尝试创建一个推送方法,该方法将首先放置任何给定的元素,并将已经存在的元素进一步推送到数组中。

首先,我创建了一个方法来增加数组的大小并进一步插入已经存在的元素。

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/

相关文章:

java - @ManyToMany 没有连接表(遗留数据库)

java - 二叉树的 LCA - 需要一些建议

java - 选择使用 hibernate

javascript - 循环一个变量的items(list),每个item也是一个带items(list)的变量

javascript - Vue.js 将对象推送到数组会将数组中的每个元素更改为相同

mysql - 查询选择所有字段不为空

C程序无法识别空指针

java - 在 macOS (Mac OS X) 上打印 Java 类路径

delphi - UFT 无法识别 Delphi 对象?

clojure - 为什么 `(count nil)`返回0?