【发布时间】:2014-06-30 21:30:57
【问题描述】:
我想写这样的代码
public int recursiveMethod() {
for (int i = 0; i < 10; i++) {
if (someBool) {
return recursiveMethod();
} else {
return -1;
}
}
}
但这会产生编译错误missing return statement。有没有其他方法可以实现这一点。
更新:实际代码
public static File searchFile(File currentFile) {
File[] results = null;
if (currentFile.isDirectory()) {
for (File file : currentFile.listFiles()) {
if (file.isDirectory()) {
return searchFile(file);
} else {
results = file.getParentFile().listFiles(new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.toLowerCase().endsWith(".sh");
}
});
if (results.length > 0) {
return results[0];
} else {
return null;
}
}
}
} else {
results = currentFile.getParentFile().listFiles(new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.toLowerCase().endsWith(".sh");
}
});
if (results.length > 0) {
return results[0];
} else {
return null;
}
}
}
【问题讨论】:
-
我们知道您的循环体将只运行一次。编译器根本不知道它会运行。鉴于循环是没有意义的(你正在返回任何一种方式),你为什么有一个循环呢?
-
为什么要循环?在第一次迭代中它返回 ...
-
也许他希望在方法结束时返回 -1 而不是在 for 中?
-
你的方法必须总是返回一个 int。编译器认为该方法可能不会返回 int。
-
@Darshana:所以这段代码不能代表你的实际问题。我建议您发布代表代码,否则我们无法帮助您。特别是,您应该考虑如果您没有找到该文件会发生什么。
标签: java for-loop recursion return