Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 线性散列程序中的NullPointerException_Java_Nullpointerexception - Fatal编程技术网

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();
}