我的代码来自while循环的空指针异常

时间:2014-09-16 17:37:37

标签: java nullpointerexception

我发现像

这样的免费区块
private DoublyLinkedList freeblock = new DoublyLinkedList();

我在构造函数中初始化了freeblock。

freeblock.add(new DoublyLinkedList.Node(null, null, 0, initBlockSize));

我班级的方法之一,(下面是我方法的一部分。) 我得到空指针异常。我认为while循环有问题。任何人都可以帮我解决这个问题吗?

症状:java.lang.NullPointerException 在LinearMemPool.enlarge(LinearMemPool.java:220)

private void enlarge(int addSize) {

DoublyLinkedList.Node node = freeblock.head;
    while (node.next != null) { 
            node = node.next;

    }
} 

3 个答案:

答案 0 :(得分:1)

显然freeblock.head为空。看看add做了什么。

答案 1 :(得分:0)

您的enlarge方法似乎有点危险。尝试将null检查更改为:

private void enlarge(int addSize) {
    DoublyLinkedList.Node node = freeblock.head;
    while (node != null) { 
        node = node.next;
    }
}

至于headnull的原因,我调试freeblock.add(...)方法。

答案 2 :(得分:0)

首先检查一下freeblock.head是否为null,因为它很可能是:

if(node!=null){

   while(node.next!=null){
   ....
}

else{
 System.out.println("Freeblock is null but why.....");

}

如果freeblock.head可以为null,您可能应该正常执行此操作。仅用于清理目的:

void newMethod(Node node, int size){
 if(node!=null)
   enlarge(size);
 else{
   System.out.println("Freeblock is null");
  }

}