此方法必须返回boolean(Java)类型的结果

这是我的代码。

boolean checkHit2() { if (cx = 640) {return true;} if (cy < ground[(int)cx]) {return false;} if (cx  blue - 15) { score = (int)score + 1; 

我究竟做错了什么? 它给我错误消息“此方法必须返回类型为boolean的结果”。 请帮忙。

“此方法必须返回boolean类型的结果”

意味着您的方法应该为每种情况返回boolean值。 目前,如果你的一个if条件为true ,它将返回boolean 。 如果你的if条件都不true怎么办? 在这种情况下,编译器将无法向方法的调用者返回任何内容。 因此,编译器告诉您为每种情况添加方法的return语句,无论条件是否满足。 您应该在方法的末尾添加return false

在您的方法中,您必须在每种情况下return一个变量(对于每个if语句),在本例中为boolean。

例:

 boolean checkHit2() { if (cx < 0 || cx >= 640) {return true;} if (cy < ground[(int)cx]) {return false;} if (cx < blue + 15 && cx > blue - 15){ score = (int)score + 1; return false; } 

另外,只是为了清理你的代码,如果块的内容只有一行,则不需要花括号。 例如,您可以使用:

 boolean checkHit2() { if (cx < 0 || cx >= 640) return true; if (cy < ground[(int)cx]) return false; if (cx < blue + 15 && cx > blue - 15){ score = (int)score + 1; return false; } 

从function上讲,它们的行为是一样的。 它只是清理代码的有用快捷方式:)。

在这个例子中,我只是返回false,因为我确保你的程序的function或你希望它如何工作。 您可以根据ifelse语句等返回值,但这取决于您以及您希望程序执行的操作。

要了解有关return更多信息, 请单击此处

这一行:

 if (cx < blue + 15 && cx > blue - 15){  

应该改为

 if((cx < (blue + 15)) && (cx > (blue -15))){ 

但我认为你应该把比较结果如下:

 int bluePlus = blue + 15; int blueMinus = blue - 15; if(cx < bluePlus && cx > blueMinus){ 

编辑:错误意味着你毕竟错过了返回布尔值。 在if之后

 if(cx < bluePlus && cx > blueMinus){ 

那么你需要添加返回结果。 请忽略第一条评论。