Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么返回语句没有执行?_Java_Binary Tree - Fatal编程技术网

Java 为什么返回语句没有执行?

Java 为什么返回语句没有执行?,java,binary-tree,Java,Binary Tree,我试图在二叉树中实现一个find方法。 当方法需要返回一个值,但它似乎不执行该语句时,就会出现问题,即使在执行的分号中有其他行 public String find(Node currentNode, String value) { if(isEmpty()) { return null; } else { if(currentNode.getData().compareToIgnoreCase(value) == 0)

我试图在二叉树中实现一个find方法。 当方法需要返回一个值,但它似乎不执行该语句时,就会出现问题,即使在执行的分号中有其他行

public String find(Node currentNode, String value)
{
    if(isEmpty())
    {
        return null;
    }
    else
    {
        if(currentNode.getData().compareToIgnoreCase(value) == 0)
        {
            System.out.println("current -> "+currentNode.getData()); //showing
            return currentNode.getData(); //not executing
        }

        if(value.compareToIgnoreCase(currentNode.getData()) < 0)
        {
            find(currentNode.getLeft(), value);
        }
        else if(value.compareToIgnoreCase(currentNode.getData()) > 0)
        {
            find(currentNode.getRight(), value);
        }
    }

    return null; //always executing
}
公共字符串查找(节点currentNode,字符串值)
{
if(isEmpty())
{
返回null;
}
其他的
{
如果(currentNode.getData().compareToIgnoreCase(值)==0)
{
System.out.println(“当前->”+currentNode.getData());//显示
返回currentNode.getData();//未执行
}
if(value.compareToIgnoreCase(currentNode.getData())<0)
{
查找(currentNode.getLeft(),值);
}
else if(value.compareToIgnoreCase(currentNode.getData())>0)
{
查找(currentNode.getRight(),值);
}
}
返回null;//始终执行
}

我预期为“a”,但在执行该行时返回null。

find(currentNode.getLeft(), value);
语句
返回currentNode.getData()正在执行,但您忽略了递归调用返回的内容。(与
getRight()
语句类似)然后if/else语句完成,并执行底部的
returnnull
。这就是为什么您总是得到
null

返回递归调用返回的任何内容,以便返回的值正确传播回原始调用,例如:

return find(currentNode.getLeft(), value);

当您执行该行时

find(currentNode.getLeft(), value);
语句
返回currentNode.getData()正在执行,但您忽略了递归调用返回的内容。(与
getRight()
语句类似)然后if/else语句完成,并执行底部的
returnnull
。这就是为什么您总是得到
null

返回递归调用返回的任何内容,以便返回的值正确传播回原始调用,例如:

return find(currentNode.getLeft(), value);

您必须使用返回递归调用的数据,现在您将忽略它。此外,您总是返回
null
,无论发生什么情况,以下是程序的固定版本:

public String find(TreeNode currentNode, String value) {
    if (currentNode == null) {
        return null;
    }

    if(currentNode.getData().compareToIgnoreCase(value) == 0) {
        return currentNode.getData(); //not executing
    }

    if (currentNode.getData().compareToIgnoreCase(value) > 0) {
        return find(currentNode.getLeft(), value);
    } else {
        return find(currentNode.getRight(), value);
    }
}

您必须使用返回递归调用的数据,现在您将忽略它。此外,您总是返回
null
,无论发生什么情况,以下是程序的固定版本:

public String find(TreeNode currentNode, String value) {
    if (currentNode == null) {
        return null;
    }

    if(currentNode.getData().compareToIgnoreCase(value) == 0) {
        return currentNode.getData(); //not executing
    }

    if (currentNode.getData().compareToIgnoreCase(value) > 0) {
        return find(currentNode.getLeft(), value);
    } else {
        return find(currentNode.getRight(), value);
    }
}

请创建一个。显示示例输入并解释发生的情况。不要只是向我们扔代码。更糟糕的是,代码不完整。请阅读,谢谢。您可能需要在递归调用
find
之前添加
return
,您永远不会对
find
调用的返回值执行任何操作。您只需调用它,但不捕获返回的结果。您可能打算
返回find(…)
。您正在调用
find
,但没有对其返回值执行任何操作。请创建一个。显示示例输入并解释发生的情况。不要只是向我们扔代码。更糟糕的是,代码不完整。请阅读,谢谢。您可能需要在递归调用
find
之前添加
return
,您永远不会对
find
调用的返回值执行任何操作。您只需调用它,但不捕获返回的结果。您可能打算
返回find(…)
。您正在调用
find
,但没有对其返回值执行任何操作。