我正在尝试将值插入到最初为空的二进制堆中。
这是相关代码:
public class minHeap
{
int[] array;
int n;
public void minHeap()
{
array = new int [16];
n = 0;
}
public void insert(int x) {
//if (n == array.length - 1)
//enlargeArray(array.length*2 + 1);
// Hole is generated at end of array
int hole = ++n;
System.out.println("H"+hole);
// Percolate up
for (array[0] = x; x < array[hole/2]; hole /= 2)
array[hole] = array[hole/2];
// Insert new element
array[hole] = x;
}
我从 insert 方法的 for 循环中得到了 NullPointerException
。这与我处理最初的空数组的方式有关吗?
这是初始化类:
public class BinaryHeap {
public static void main(String[] args)
{
int [] heapArray = {62, 75, 81, 71, 66, 69, 72, 73, 83, 82, 67, 72, 81, 73, 69, 90};
minHeap hp = new minHeap();
for(int i = 0; i < heapArray.length; i++)
{
hp.insert(heapArray[i]);
}
}
}
最佳答案
您尚未定义构造函数。
你写了...
public void minHeap()
这是一个方法,因为它有一个“void”返回类型。
如果你删除“void”,它可能会有所帮助
关于java - 插入二进制堆时出现 NullPointerException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29631208/