二叉搜索树,搜索方法

时间:2013-01-16 08:17:13

标签: java binary-search-tree

我正在尝试运行我的Binary Search Tree,我正在我的主程序中创建Employee类型的对象,这似乎不会给我带来任何问题,但是当我选择在我的主程序中搜索某个项目时BST,程序终止。

 System.out.println("Searching the Binary Search Tree");
                        System.out.println("Enter surname to search for:");
                        String choice2 = sc.nextLine(); 
                        BinaryNode a = temp.search(choice2);
                        Employee newEmp = (Employee) a.obj;
                        if (a == null)
                            {
                                System.out.println("Not Found");
                            }
                        else
                            {
                                System.out.println(newEmp.getData());
                            }
                       break;
                    }

当程序终止时,它指向

Employee newEmp = (Employee) a.obj;

,给出的错误是java.lang.NullPointerException: null

有人能告诉我为什么会这样吗?

3 个答案:

答案 0 :(得分:2)

您无法访问null对象的.obj。 在检查a == null之后应该移动线。

 System.out.println("Searching the Binary Search Tree");
                    System.out.println("Enter surname to search for:");
                    String choice2 = sc.nextLine(); 
                    BinaryNode a = temp.search(choice2);
                    if (a == null)
                        {
                            System.out.println("Not Found");
                        }
                    else
                        {
                            Employee newEmp = (Employee) a.obj;
                            System.out.println(newEmp.getData());
                        }
                   break;
                }

答案 1 :(得分:0)

请检查temp.search(choice2)是否返回非空值?具有空引用的强制转换会导致此类错误

除此之外,还要确保您为BinaryNode执行的强制转换确实是员工。 (虽然这与NullPointerException无关)

答案 2 :(得分:0)

您的search方法可以返回null,因此您应该重新组织代码并将Employee newEmp = (Employee) a.obj;行添加到else部分条件。