Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.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方法中的Return语句不是终止方法_Java_Recursion_Return - Fatal编程技术网

递归Java方法中的Return语句不是终止方法

递归Java方法中的Return语句不是终止方法,java,recursion,return,Java,Recursion,Return,我不熟悉Java中的递归,正在处理一个类,用于搜索文件并返回相关文件的位置 我遇到了一个小问题。当找到所需的文件时,该方法应该返回“elseif”块中文件位置的字符串并终止该方法。而是返回默认字符串(“未找到文件”),仅在未找到所需文件时使用 我知道函数可以检测到所需的文件,我在“else-if”块中做了一个print语句(注释掉)打印出文件位置,这是可行的,但是,在“else-if”块中返回一个值不会终止该方法,只是运行其“default”返回值 有什么想法或建议吗 导入java.io.Fil

我不熟悉Java中的递归,正在处理一个类,用于搜索文件并返回相关文件的位置

我遇到了一个小问题。当找到所需的文件时,该方法应该返回“elseif”块中文件位置的字符串并终止该方法。而是返回默认字符串(“未找到文件”),仅在未找到所需文件时使用

我知道函数可以检测到所需的文件,我在“else-if”块中做了一个print语句(注释掉)打印出文件位置,这是可行的,但是,在“else-if”块中返回一个值不会终止该方法,只是运行其“default”返回值

有什么想法或建议吗

导入java.io.File;
导入java.util.*;
公共类文件搜索{
公共静态字符串findFile(文件路径、字符串目标){
if(path==null | |!path.exists()){
return(“路径不存在”);//如果不存在这样的路径。
}
File[]list=path.listFiles();
如果(列表!=null){
for(int i=0;i
问题是您忽略了递归调用
findFile(list[i],target)
返回的值。当该调用找到目标文件时,您应该返回它返回的值

更改:

        if (list[i].isDirectory()) {
            // System.out.println("Searching Path...");
            findFile(list[i], target);
        }
致:


这似乎是个诀窍,非常感谢!希望我能在考试前及时掌握递归逻辑!我感谢你的帮助。
        if (list[i].isDirectory()) {
            // System.out.println("Searching Path...");
            String result = findFile(list[i], target);
            if (!result.equals("File Not Found") && !result.equals("Path Doesnt Exist.")) {
                return result;
            }
        }