这是我的代码。
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;
我做错了什么?它给我错误消息“此方法必须返回类型为boolean的结果”。请帮忙。
答案 0 :(得分:2)
&#34;此方法必须返回boolean&#34;
类型的结果
表示您的方法应为每个案例返回boolean
值。目前,如果您的if条件之一为boolean
,则会返回true
。如果你的if条件都不是true
怎么办?在这种情况下,编译器将无法向方法的调用者返回任何内容。因此,无论条件是否满足,编译器都会告诉您为每种情况添加return
语句。您应该在方法的末尾添加return false
。
答案 1 :(得分:1)
在你的方法中,你必须在每种情况下return
一个变量(对于每个if
语句),在这种情况下,是一个布尔值。
示例:
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;
}
在功能上,它们的行为相同。这只是清理代码的有用快捷方式:)。
在这个例子中,我只是返回false,因为我确保你的程序的功能或你希望它如何工作。您可以根据if
或else
声明等返回值,但这取决于您以及您希望程序执行的操作。
要详细了解return
,click here
答案 2 :(得分:-1)
这一行:
<b>if (cx < blue + 15 && cx > blue - 15){ </b>
应改为
<b>if((cx < (blue + 15)) && (cx > (blue -15))){</b>
但我认为你应该像以下那样推动比较:
int bluePlus = blue + 15;
int blueMinus = blue - 15;
if(cx < bluePlus && cx > blueMinus){
编辑: 该错误意味着你总是错过了返回布尔值。在if之后
if(cx < bluePlus && cx > blueMinus){
然后你需要添加返回结果。 请忽略第一条评论。