我的方法不能返回布尔值

时间:2013-12-30 16:27:20

标签: java

我是java的新手。

这是我的代码:

public boolean endsLy(String str) {
  if(str.length()>=2){
    if(str.substring(str.length()-2).equals("ly")) return true;
  }
  else return false;
}

但编译器给出:

Error:  public boolean endsLy(String str) {          
This method must return a result of type boolean

可能的问题:理论上可能是if语句结构 允许运行到达方法的末尾而不调用return 考虑在方法中添加最后一行返回some_value; 所以总会返回一个值。

6 个答案:

答案 0 :(得分:6)

您没有处理(str.length()>=2所在的分支,而是!str.substring(str.length()-2).equals("ly")。从最终的else声明中删除return

public boolean endsLy(String str) {


  if(str.length()>=2){

    if(str.substring(str.length()-2).equals("ly")) return true;

  }
  return false;

}

更简单的替代方案(也不太容易出现您遇到的错误),只有一个return语句:

public boolean endsLy(String str) {
    return str.length()>=2 && str.substring(str.length()-2).equals("ly");
}

答案 1 :(得分:3)

或者简单地说:

public static boolean endsLy(String str) {
     return str.length()>= 2 && str.substring(str.length()-2).equals("ly");
}

您还可以检查String是否为空。

return str != null && str.length()>= 2 && str.substring(str.length()-2).equals("ly");

答案 2 :(得分:0)

这里有一个更正:

 public boolean endsLy(String str) {
     if(str.length()>=2){

        if(str.substring(str.length()-2).equals("ly"))
         return true;
         else
         return false;

      }
      else{ 
      return false;
      }

}

答案 3 :(得分:0)

此错误表示在某些情况下函数可能不会返回任何内容。

所以,如果这个条件=> if(str.length()>=2)表示代码将进入其中。现在如果这个条件是假的=> if(str.substring(str.length()-2)该函数将无法返回。因此,错误提示是明智之举。

这意味着并非此函数中的所有条件都返回bool值。当函数没有任何东西可以返回时,可能会出现条件。

答案 4 :(得分:0)

避免多个false return语句,因为返回值仅对于条件if为真(str.substring(str.length() - 2).equals(“ly”))。以下代码仅供参考。

 public boolean endsLy(String str) {


      if(str.length()>=2){

        if(str.substring(str.length()-2).equals("ly")) 
            return true;

      }
    return false;

    }

答案 5 :(得分:0)

因为在!str.substring(str.length() - 2)中没有返回布尔值。等于(“ly”)

如果你想检查你的链是由最后两个中的四个字符组成的“ly”,你可以使用以下代码:

public boolean endsLy(String str) {
    if (str.length() == 4 && str.endsWith("ly"))
        return true;
    return false;
}