Java 私有布尔值要求 return 而 return 在那里

Java private boolean asking for return while return is there

我的 java 代码中出现奇怪的错误:

error: This method must return a result of type boolean

为什么这个 public 布尔值在我添加 return true 和 return false 时给出这个错误?

我的代码:

public void render(float delta) {

    ....................
    .... Other code ....
    ....................

    if (hasBallCollision(player)){
        ball.setZy(3 * screenheight);
        difficulty += 0.1;
    }
}

private boolean hasBallColission(Player player){
    if(ball.getX()+8*screenwidth>player.getX()-40*screenwidth&&ball.getX()+8*screenwidth<player.getX()+40*screenwidth){
        if(ball.getY()>player.getY()&&ball.getY()<player.getY()+16*screenheight){
            return true;
        }
    }else{
        return false;
    }
}

感谢reading/helping!

您没有在所有路径中都有 return 语句:

if (ball.getX()+8*screenwidth>player.getX()-40*screenwidth&&ball.getX()+8*screenwidth<player.getX()+40*screenwidth) {
    if (ball.getY()>player.getY()&&ball.getY()<player.getY()+16*screenheight) {
        return true;
    }
    // missing return statement here
} else {
    return false;
}

并非所有路径都在您的 hasBallColission(您可能是指 "collision")return 一个值。

在您嵌套的 if 语句中,没有 else 语句。

为了避免所有路径泄漏。始终首先定义您的 "return value"。

private boolean hasBallColission(Player player){
    boolean rtnValue = false;
    if(ball.getX()+8*screenwidth>player.getX()-40*screenwidth&&ball.getX()+8*screenwidth<player.getX()+40*screenwidth){
        if(ball.getY()>player.getY()&&ball.getY()<player.getY()+16*screenheight){
           rtnValue = true;
        }
    }
    return rtnValue;}