¿Por qué estoy obteniendo nullpointerException para este método btree?
-
23-09-2019 - |
Pregunta
Estoy escribiendo código para algoritmos BTree. Estoy recibiendo nullpointerexception. ¿¿¿¿por qué???? ¡Por favor, alguien me ayude ...!
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];
}
}
Solución
Parece que cualquiera de los padres es nulo o nodo. Pointers [i] es nulo (en algún momento). Intenta cambiarlo a:
node = node.pointers[i];
if(node == null){
break; // or something else
}
Editar: en realidad, simplemente cambie su bucle a while(node != null){
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow