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

时间:2015-07-08 02:06:13

标签: java return boolean return-value return-type

这是我的代码。

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的结果”。请帮忙。

3 个答案:

答案 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,因为我确保你的程序的功能或你希望它如何工作。您可以根据ifelse声明等返回值,但这取决于您以及您希望程序执行的操作。

要详细了解returnclick 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){

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