繁体   English   中英

我的方法无法返回布尔值

[英]My method can't return boolean

我是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。
考虑在方法return some_value中添加最后一行; 因此总是返回一个值。

您不在处理(str.length()>=2的分支,而是!str.substring(str.length()-2).equals("ly") ,从最终return语句中删除else

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");
}

或者简单地:

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

您可能还会检查String是否不为null。

return str != null && str.length()>= 2 && 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;
         else
         return false;

      }
      else{ 
      return false;
      }

}

此错误意味着在某些情况下该函数可能不返回任何内容。

因此,如果此条件=> if(str.length()>=2)成立,则代码将输入其中。 现在,如果此条件为false => if(str.substring(str.length()-2)该函数将没有任何返回值,因此错误提示是明智之举。

这意味着并非该函数中的所有条件都返回布尔值。 当函数没有任何返回值时,可能会发生条件。

避免使用多个错误的return语句,因为只有条件if(str.substring(str.length()-2).equals(“ ly”))的返回值才为true。 以下代码仅供参考。

 public boolean endsLy(String str) {


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

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

      }
    return false;

    }

因为如果没有!str.substring(str.length()-2),则不会返回布尔值 等于(“ ly”)

如果要检查您的链由四个字符组成,而后两个字符是“ ly”,则可以使用以下代码:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM