2010-04-01 58 views
0

我正在編寫btree算法的代碼。我得到NullPointerException。爲什麼????請有人幫助我...!爲什麼我得到這個btree方法的NullPointerException?

public void insertNonFull(BPlusNode root,BPlusNode parent,String key) 
{ 
    int i=0; 
    BPlusNode child=new BPlusNode(); 
    BPlusNode node=parent; 

    while(true) 
    { 
     i=node.numKeys-1; 

     if(node.leaf) 
     { 
      while(i>=0 && key.compareTo(node.keys[i])<0) 
      { 
       node.keys[i+1]=node.keys[i]; 
       i--; 
      } 

      node.keys[i+1]=key; 
      node.numKeys=node.numKeys+1; 
     } 

     else 
     { 
      while(i>=0 && key.compareTo(node.keys[i])<0) 
      { 
       i--; 
      } 
     } 

     i++; 
     child=node.pointers[i]; 

     if(child!=null && child.numKeys==7) 
     { 
      splitChild(root,node,i,child); 

      if(key.compareTo(node.keys[i])>0) 
      { 
       i++; 
      } 
     } 

     node=node.pointers[i]; 
    } 
} 
+0

你得到一個'NullPointerException'因爲事情是零。什麼代碼產生錯誤,你的調試器說什麼? – 2010-04-01 03:13:42

+0

我正在使用netbeans。這就是我得到 運行: 異常線程 「main」 顯示java.lang.NullPointerException 在BPTOperations.insertNonFull(BPTOperations.java:86) 錯誤是在該行 I = node.numKeys -1; – rohit 2010-04-01 03:30:07

回答

1

聽起來像是父母爲空,或者node.pointers [i]爲空(在某個時刻)。嘗試將其更改爲:

node = node.pointers[i]; 
if(node == null){ 
    break; // or something else 
} 

編輯:其實,只要改變你的循環,以while(node != null){

+0

非常感謝您的幫助...... !!它爲我工作... 我分配空值的一些對象,然後試圖對其執行操作... 再次感謝 – rohit 2010-04-01 04:56:20

相關問題