【问题标题】:This method must return a result of type boolean(Java)此方法必须返回 boolean(Java) 类型的结果
【发布时间】:2015-09-25 18:06:18
【问题描述】:

这是我的代码。

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;

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

【问题讨论】:

  • 这段代码甚至不会编译。你能重新发布完整的方法吗?
  • 当然它不能编译,这就是 OP 所问的,为什么当他/她尝试编译它时会收到错误“此方法必须返回布尔类型的结果” .

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    在您的方法中,您必须在每种情况下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

    【讨论】:

      【解决方案3】:

      这一行:

      <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(cx < bluePlus && cx > blueMinus){
      

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

      【讨论】:

      • 这个答案根本无效。它根本没有解决抛出的错误。
      猜你喜欢
      • 2013-12-18
      • 1970-01-01
      • 2020-02-16
      • 2018-03-08
      • 2013-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多