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