Java 线性散列程序中的NullPointerException
我试图完善一个程序,它是一个线性散列算法的模型。然而,我很困惑,为什么我现在在这一行上得到一个Java 线性散列程序中的NullPointerException,java,nullpointerexception,Java,Nullpointerexception,我试图完善一个程序,它是一个线性散列算法的模型。然而,我很困惑,为什么我现在在这一行上得到一个NullPointerException。我已经改变了我能想到的一切,但什么都不管用 打印输出为: Exception in thread "main" java.lang.NullPointerException at Directory.addKey(Directory.java:13) at Drive.main(Drive.java:37) 以及守则: 驱力 目录 public
NullPointerException
。我已经改变了我能想到的一切,但什么都不管用
打印输出为:
Exception in thread "main" java.lang.NullPointerException
at Directory.addKey(Directory.java:13)
at Drive.main(Drive.java:37)
以及守则:
驱力
目录
public class Directory {
private int m;
private int s;
private BucketNode directory[];
final private int BUCKET_SIZE = 2;
public Directory(int m, int s){
this.m = m;
this.s = s;
directory = new BucketNode[8];
}
public void addKey(int key, int fileLoc){
directory[key%m].add(key, fileLoc);
System.out.printf("Key! %d", directory[0].getKeys()[1]);
}
public void processOverflow(){
}
public void showData(){
}
}
创建bucket节点数组时,它包含
null
s。您需要初始化数组中的每个元素:
directory = new BucketNode[8];
for (int i = 0; i < 8; i++) {
directory[i] = new BucketNode();
}
directory=newbucketnode[8];
对于(int i=0;i<8;i++){
目录[i]=新BucketNode();
}
对于int、boolean、char等基元数组来说是可以的,因为元素设置为默认值,如0、false、0。如果您有对象数组-默认值If
null
这不是完整的堆栈跟踪,请将其完全发布,因为这就是信息所在。嘎,我觉得现在没有注意到这一点很愚蠢。不过非常感谢你,这让我摆脱了我的困境。
public class Directory {
private int m;
private int s;
private BucketNode directory[];
final private int BUCKET_SIZE = 2;
public Directory(int m, int s){
this.m = m;
this.s = s;
directory = new BucketNode[8];
}
public void addKey(int key, int fileLoc){
directory[key%m].add(key, fileLoc);
System.out.printf("Key! %d", directory[0].getKeys()[1]);
}
public void processOverflow(){
}
public void showData(){
}
}
directory = new BucketNode[8];
for (int i = 0; i < 8; i++) {
directory[i] = new BucketNode();
}