【问题标题】:How to declare an array element null?如何声明一个数组元素为空?
【发布时间】:2014-01-12 17:25:28
【问题描述】:

我试图找出我的代码发生了什么,我不断收到 nullexeptionpointer 问题。所以我决定减少我的代码并找出发生了什么。我想删除提供要删除的索引的特定元素,然后移动它后面的所有元素以填充剩余的空间。

移动所有元素后,我想将数组中的最后一个元素设置为空,但我得到错误并且无法编译。

public static void main(String[] args) {


    int [] charSort = new int[] {12, 5, 7, 4 ,26 ,20 ,1, 6 ,3 ,14, 8, 11};

    TextIO.putln("ArrayNum = [12, 5, 7, 4 ,26 ,20 ,1, 6 ,3 ,14, 8, 11]\n");

    TextIO.put("Sorted ArrayNum is:  \n");

    //IntSelecttionSort(charSort);

    TextIO.putln(Arrays.toString(charSort));

    TextIO.put("Enter: "); RemoveShift (charSort, TextIO.getInt());
}


public static void RemoveShift (int[] move, int p){

    for(int i = 0; i<move.length; i++){

        TextIO.put(i+", ");
    }
    TextIO.putln();
    for(int i = p; i<move.length-1; i++){

        move[i]=move[i+1];
    }
    move[move.length-1]=null; // null seems not to work here

    TextIO.putln(Arrays.toString(move));
}   

【问题讨论】:

    标签: java arrays nullpointerexception


    【解决方案1】:

    intprimitive,不能分配值 null

    如果你想在这里使用null,你可以使用包装类Integer来代替:

    public static void RemoveShift (Integer[] move, int p){ 
    

    因为autoboxing,你甚至可以用同样的方式初始化你的数组:

    Integer[] charSort = new Integer[] {12, 5, 7, 4 ,26 ,20 ,1, 6 ,3 ,14, 8, 11};
    

    正如@JBNizet 指出的那样,如果您想修改整数数组,一个不错的选择是改用ArrayList。这可以让您的生活更轻松。

    【讨论】:

    • 如果 OP 想要一个可修改的 Integer 数组,那么他应该使用 ArrayList 而不是重新发明轮子。不是对您的回答的批评,只是值得一提,IMO。
    猜你喜欢
    • 2020-09-21
    • 2014-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-20
    • 2013-10-13
    • 1970-01-01
    • 2013-09-19
    相关资源
    最近更新 更多