我的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;
}
}
感谢阅读/帮助!
答案 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;
}