在javax中从数组中删除第一项

nzkunb0c  于 2021-07-12  发布在  Java
关注(0)|答案(2)|浏览(284)

有一个赋值问题,要求返回数组中的第一个项,然后将其删除。如果数组为空,我应该返回null。这是我的密码:

public String pop(){
    if(arrayLength == 0){
        return null;
    }else{
        String[] temp = new String[100];
        String firstItem = StringStack[0];
        for(int i = 1; i<StringStack.length; i++){
            temp[i] = StringStack[i];
        }
        StringStack = temp;
        return firstItem;
    }
}

arraylength变量通过此方法设置,工作正常:

public int getLength(){
    int count = 0;
    for (String s : StringStack) {
        if (s != null) {
            count++;
        }
    }
    return count;
}

我搞不清楚我在这里做错了什么。这个问题的另一部分是我不能使用任何collections或systems.arraycopy,所以我必须使用for循环和其他基本操作符来解决这个问题。它也必须是一个数组,所以我不能使用数组列表或其他数据结构。

mxg2im7a

mxg2im7a1#

这是一个有两个固定问题的版本:

public String pop() {
    if(StringStack == null || StringStack.length == 0)
        return null;

    String firstItem = StringStack[0];

    String[] temp = new String[StringStack.length-1]; // allocate proper size
    for(int i = 1; i<StringStack.length; i++){
        temp[i-1] = StringStack[i]; // i-1 for temp array
    }
    StringStack = temp;

    return firstItem;
}
ztigrdn8

ztigrdn82#

代替

for(int i = 1; i<StringStack.length; i++){
    temp[i] = StringStack[i];
}

具有

for(int i = 1; i<StringStack.length; i++){
    temp[i-1] = StringStack[i];
}

相关问题