2010-04-01 2 views
0

Я пишу код для алгоритмов btree. Я получаю исключение NullPointerException. Зачем???? пожалуйста, помогите мне ...!Почему я получаю NullPointerException для этого метода btree?

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', потому что что-то является недействительным. Какая строка кода генерирует ошибку и что говорит ваш отладчик? –

+0

Я использую netbeans. Это то, что я получаю пробег: Исключение в потоке "главный" java.lang.NullPointerException в BPTOperations.insertNonFull (BPTOperations.java:86) ошибка в строке я = node.numKeys -1; – rohit

ответ

1

Похоже, что любой из родителей имеет значение null или node.pointers [i] имеет значение null (в какой-то момент). Попробуйте изменить его:

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

EDIT: На самом деле, просто изменить свой цикл, чтобы while(node != null){

+0

Большое спасибо за очень быструю помощь ... !! это сработало для меня ... Я назначал пустые значения для некоторых объектов, а затем пытался выполнить операции над ним ... Еще раз спасибо – rohit

Смежные вопросы