我正在尝试运行我的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
有人能告诉我为什么会这样吗?
答案 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
部分条件。