【问题标题】:Missing return statement when trying to return a boolean value尝试返回布尔值时缺少返回语句
【发布时间】:2017-11-30 06:22:36
【问题描述】:

我在 java 中不断收到错误,我不知道为什么“缺少返回语句”。我要做的是创建一个带有两个参数(字符串和字符)的方法,检查字符是否出现在字符串中并根据比较返回一个布尔值。这是我目前所拥有的:

  public static boolean compare(String h, char x){

int counter = 0;
for(int i = 0; i < h.length(); i++){
  counter++;
  if(h.charAt(i) == 'o'){
    return true;
  }
  else
    return false;
}

  }

同样,控制台中的错误是“缺少返回语句”。 请注意,我不是 Java 专家,可能我的代码中有更多错误,对此我提前道歉。

edit:不要看缩进,我这里只是复制粘贴代码。 编辑 2:“h”在我的代码中是“Hello world”。

【问题讨论】:

  • 为 else 代码添加花括号并检查。
  • 提示:如果 h 为空会怎样
  • 别看缩进 当你的代码被这样缩进时,我和其他人无法阅读它。如果你的意图正确,你的问题就会变得清晰。
  • @JoeC 编辑器里的代码是正确的,不知道为什么这里缩进了,不好意思。

标签: java return statements


【解决方案1】:

您应该将布尔结果分配给一个变量,而不是在循环中返回它。在 for 循环之后添加 return 语句,这应该可以解决您的问题。高温

 public static boolean compare(String h, char x){

       int counter = 0;
       boolean flag = false;

       for(int i = 0; i < h.length(); i++){
         counter++;
         if(h.charAt(i) == 'o'){
             flag = true;
         }
         else
             flag = false;
       }
        return flag;
}

【讨论】:

  • 假设逻辑应该在String参数h中包含给定的charo,那么只有当String的最后一个字符是@时它才会是true 987654328@ 否则返回false。您可以使用if-else 而不是上述逻辑(或者)一旦找到char 的第一次出现,您可以打破for-loop 如果我的假设是正确的
【解决方案2】:

这是因为您的 ifelse 条件在 for 循环中。 for 循环本身就是一个条件循环。

如果您的ifelse 仍未到达,可能会出现这种情况。 您需要在此处的 for 循环之外返回一个布尔值。

示例场景: 'h' 是一个空字符串。

编辑:根据您的陈述 "h" is "Hello world" in my code,在编译时,编译器不会查看传递给“h”的值。 您的 compare 方法是个人身份,它完全不限于单次使用。

【讨论】:

    【解决方案3】:

    因为你的 for 循环 i &lt; h.length() 如果 h.length()0 那么 for 循环内的代码是无法访问的,所以它会显示缺少返回语句的错误。

    【讨论】:

      猜你喜欢
      • 2019-06-17
      • 2012-08-16
      • 2013-11-30
      • 2017-01-26
      • 2017-09-21
      • 2021-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多