从数组中删除项目。 (JAVA)

时间:2013-11-29 16:25:35

标签: java arrays

我现在正在使用Java,我正在尝试将数组复制到一个临时数组中,然后再使用新列表重写,但代码无法运行。

MobilePhoneInventory.java

public void delete(MobilePhone p) {
    MobilePhone[] temp = new MobilePhone[list.length-1];
    int adj = 0;
    for (int i = 0; i < list.length; i++) {
        if (p != list[i]) {
            temp[i-adj] = list[i];
        }
        else adj = 1;
    }
    list = temp;
    numMobilePhone--;
}

MobilePhoneStart.java

    if (e.getSource() == myDelete) {
        if (inven.size() > 1) {
            inven.delete(inven.get(see));
            see--;
            if (see < 0) {
                see = 0;
            }
            showMP();
        } else {
            System.exit(0);
        }
    }

由于某种原因,它没有创建新列表。有任何想法吗?提前谢谢。

1 个答案:

答案 0 :(得分:3)

复制Java数组时,我首选的方法是使用System.arrayCopy。在您的情况下,您在循环中进行了测试,这实际上可能使您的方法更合适。

如果没有看到课程的其余部分及其可变状态如何工作,则很难确定解决方案。总的来说,它看起来不错。可能在某个地方有一个错误的引用,所以你没有得到你认为你得到的东西。

但值得测试的一件事是你的平等测试是正确的:

if (p != list[i]) {

因为您可能会发现! ... .equals测试比!=更可靠。

相关问题