希望你们能弄清楚为什么即时得到什么,我可以提供一个空指针异常,该方案有几个类和方法,但这是打破了一个。空指针异常在if语句
public void search(Node node, String sData, int iData)
{
if (sData.equals(node.getString()) && (iData == node.getInt()))
{
System.out.println("Nailed it");
}else if (sData.compareTo(node.stringData) < 0)
{
search(node.left, sData, iData);
}else if (sData.compareTo(node.stringData) > 0)
{
search(node.right, sData, iData);
}
}
是首先让输入节点是根,然后它会向左或向右从那里通过递归,但是这行的示数是if语句往上顶。无法弄清楚什么是错误的当调用方法时,sData只是一个标准的字符串输入,而iData也只是一个int输入。不能弄清楚= /感谢您的帮助
如果一个节点没有正确的节点,也就是说节点可能为空。该节点是一片叶子。所以你必须检查null。 – rapadura 2012-01-31 23:47:19
我的猜测是,您正在查找的值不在搜索树中(或者您的初始if语句未按预期工作),最终导致node.left或node.right在到达叶节点时变为null节点。下一次搜索调用将尝试调用node.getString(),然后抛出空指针异常。 – Bill 2012-01-31 23:48:13