返回的Java私有布尔值请求返回

时间:2015-01-27 09:27:54

标签: java boolean

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

error: This method must return a result of type boolean

为什么这个公共布尔值会在我添加return true并返回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;
    }
}

感谢阅读/帮助!

3 个答案:

答案 0 :(得分:3)

并非hasBallColission中的所有路径(您可能意味着&#34;碰撞&#34;)都会返回一个值。

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

答案 1 :(得分:2)

为了避免在所有路径中泄漏。始终首先定义“返回值”。

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;}

答案 2 :(得分:1)

您在所有路径中都没有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;
}