1

items 数组在 jar 中声明,它的大小和值由我声明。我试过这个

public void itemsDelete(int x)
{
    Item[] temp=new Item[items.length-1];
    for(int i=0;i<temp.length;i++)
    {
        if(i!=x)
        {
            temp[i]=items[i];
        }
    }
    items=new Item[temp.length]
    for(int i=0;i<temp.length;i++)
    {
        items[i]=temp[i];
    }
}

和一个 if(items[i]!=null){code...} 但在这两种情况下,当我运行它时,这个“线程中的异常”AWT-EventQueue-0“java.lang.NullPointerException”被看到。什么可以是问题吗?

4

1 回答 1

1

第一个循环总是在复制最后一项之前停止,并且不会有任何值复制到索引 x 处的临时数组中。

想象 items 是一个字符串数组:

“0”、“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”

并且您想使用您将获得的代码删除索引 5 处的项目:

“0”、“1”、“2”、“3”、“4”、空值、“6”、“7”

这可以解释为什么你会得到一个空指针异常,大概是稍后处理 items 数组时。

这可能会做更多您想要的事情,并且正如 Perception 建议的那样,您可以在完成后分配等于 temp 的项目。

public void itemsDelete(int x)
{
Item[] temp=new Item[items.length-1];

//This variable will keep track of the index in the temp array
int j = 0;

//for each of the items in the input array...
for(int i=0;i<items.length;i++)
{
    if(i!=x)
    {
        temp[j]=items[i];
        //We've copied a value so increment the temp index...
        j++;
    }
}

items = temp;
}
于 2013-03-30T01:19:02.307 回答