Java NullPointerException:赋值null

时间:2014-01-11 02:58:49

标签: java tree nullpointerexception

我编写了一个从未排序数组构建BTS的函数

public static TreeNode buildTree(int[] a){
    TreeNode parent=new TreeNode();
    TreeNode curr=new TreeNode();
    curr.e=a[0];
    TreeNode root=curr;
    int v;
    for(int i=1;i<a.length;i++){
        curr=root;
        v=a[i];
        A: while(curr!=null){
            if(v>=curr.e) {
                parent=curr;
                if(curr.right==null) break A;
                    curr=curr.right;
            }
            else{
                parent=curr;
                if(curr.left==null) break A;
                curr=curr.left;
            }
        }
        //parent is leaf
        if(v>=parent.e){
            System.out.println(parent.e);
            parent.right=new TreeNode();
            parent.right.e=v;
        }
        else{
            parent.left=new TreeNode();
            parent.left.e=v;
        }
    }
    return root;
}

如果我没有添加这些行:

if(curr.left==null) break A;
if(curr.right==null) break A;

我得到nullPointerException

我不明白为什么。 如果curr.leftnull,那么我分配curr=curr.left,我不是curr=null,而while循环会中断吗?

null分配给这样的对象是不合法的吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

哦......抱歉!!!

它有效,之前没有用的原因是我忘记了添加其他{}

parent=curr;
    if(curr.left==null) break A;
        curr=curr.left;

这就是我有nullPointerException的原因。

if(curr.left==null) break A;
if(curr.right==null) break A;

没必要。

答案 1 :(得分:0)

当我评论这些行时,应用程序无一例外:if(curr.left == null)break A; if(curr.right == null)打破A; 我的代码是buildTree(new int [] {1,0,1});结果是1,没有错误。您可以提供更详细的信息