首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >二分搜索树,搜索方法

二分搜索树,搜索方法
EN

Stack Overflow用户
提问于 2013-01-16 16:17:13
回答 3查看 632关注 0票数 0

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

代码语言:javascript
复制
 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;
                    }

当程序终止时,它指向这一行

代码语言:javascript
复制
Employee newEmp = (Employee) a.obj;

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-16 16:22:15

您不能访问空对象的.obj。检查是否为a==null后,应移动行。

代码语言:javascript
复制
 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;
                }
票数 2
EN

Stack Overflow用户

发布于 2013-01-16 16:22:35

您能检查一下temp.search(choice2)是否返回非空值吗?使用空引用进行强制转换会导致此类错误

除此之外,要确保你为BinaryNode a表演的演员确实是员工。(虽然这与NullPointerException无关)

票数 0
EN

Stack Overflow用户

发布于 2013-01-16 16:26:07

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14353922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档