我在“newIndexer[i].index = (int)Double.POSITIVE_INFINITY;
”行中有一个 NullPointerException
,但我不知道为什么。非常感谢任何帮助。
public void resizeIndexer(int newKey)
{
if (maxHeap >= newKey)
return;
if (newKey > maxHeap){
Handle[] newIndexer = new Handle[newKey + 1];
for (int i = 0; i < newKey; i++){
if (i < maxHeap)
newIndexer[i] = this.Indexer[i];
else{
System.out.println(i);
newIndexer[i].index = (int)Double.POSITIVE_INFINITY;
newIndexer[i].status = false;
}
}
maxHeap = newKey;
Indexer = newIndexer;
}
}
最佳答案
在修改 index
和 status
成员之前,您必须为新数组的每个新索引创建一个新的 Handle 实例:
for (int i = 0; i < newKey; i++){
if (i < maxHeap)
newIndexer[i] = this.Indexer[i];
else{
System.out.println(i);
newIndexer[i] = new Handle ();
newIndexer[i].index = (int)Double.POSITIVE_INFINITY;
newIndexer[i].status = false;
}
}
关于java - 调整数组大小时出现空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27018842/