0

我正在尝试运行我的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

谁能告诉我为什么会这样?

4

3 回答 3

2

您无法访问空对象的 .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;
                }
于 2013-01-16T08:22:14.817 回答
0

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

除此之外,请确保您为 BinaryNode a 执行的演员阵容确实是 Employee。(虽然这与 NullPointerException 无关)

于 2013-01-16T08:22:34.747 回答
0

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

于 2013-01-16T08:26:07.193 回答