带有if语句的Java布尔方法 - "必须返回boolean类型的结果"

Jef*_*eff -1 java boolean

我遇到了布尔方法的麻烦.

private boolean askYesNoQuestion(String prompt){
prompt = prompt.toLowerCase();
if(prompt.equals("yes")) return true;
if(prompt.equals("no")) return false;
else prompt = readLine("Please answer yes or no.");
}
Run Code Online (Sandbox Code Playgroud)

Eclipse说:" 该方法必须返回boolean类型的结果 ".

以下代码中的问题相同:

private boolean isPerfectSquare(int n){
for(int i = 0; i <= n; i++){
if(i*i == n) {
return true;
}
else return false;
}
Run Code Online (Sandbox Code Playgroud)

我想我已经包括return在声明中,除了它们是在if发表声明之后.

das*_*ght 5

虽然你确实包含了一对return语句,但它们都发生在循环中.Java检查所有路径,并发现循环可以在不进入第一次迭代的情况下完成 - 例如,因为它n是负数.在这种情况下,if语句不会被执行,因此不会return.

您可以在循环后包含无条件返回来修复此问题.但是,看起来您的逻辑被破坏了:如果您完全进入循环,您将立即返回,而不会完成第一次迭代.看起来你打算写这个:

private boolean isPerfectSquare(int n){
    for(int i = 0; i <= n; i++){
        if(i*i == n) {
            return true;
        }
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)