我正在尝试运行我的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
有人能告诉我为什么会这样吗?
发布于 2013-01-16 16:22:15
您不能访问空对象的.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-16 16:22:35
您能检查一下temp.search(choice2)是否返回非空值吗?使用空引用进行强制转换会导致此类错误
除此之外,要确保你为BinaryNode a表演的演员确实是员工。(虽然这与NullPointerException无关)
发布于 2013-01-16 16:26:07
您的search方法可以返回null,因此您应该重新组织代码,并将行Employee newEmp = (Employee) a.obj;添加到else条件的一部分。
https://stackoverflow.com/questions/14353922
复制相似问题