为什么我在这个 btree 方法中遇到 NullPointerException?

发布于 2024-08-27 04:12:29 字数 1029 浏览 6 评论 0原文

我正在为 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];
    }
}

i am writing code for btree algorithms. i am getting NullPointerException . why???? please somebody help me...!

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];
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

带刺的爱情 2024-09-03 04:12:29

听起来要么parent为null,要么node.pointers[i]为null(在某些时候)。尝试将其更改为:

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

编辑:实际上,只需将循环更改为 while(node != null){

It sounds like either parent is null, or node.pointers[i] is null (at some point). Try changing it to:

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

EDIT: Actually, just change your loop to while(node != null){

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文