与.equals()相比,两个相等的字符串返回false

时间:2017-05-12 00:24:11

标签: java string

"给定两个字符串,如果其中一个字符串出现在另一个字符串的最末端,则返回true,忽略大小写差异(换句话说,计算不应该是"区分大小写& #34;)"

当我通过测试放置两个变量时,子字符串等于两个字符串中较短的一个,但它仍然在我的if语句中返回false。

这是我尝试编写关于字符串的蝙蝠的解决方案。我已将字符串存储为新字符串以消除区分大小写。可以在here找到该链接以供参考。1

public boolean endOther(String a, String b) {

  String x = a.toLowerCase();
  String y = b.toLowerCase();
  int xl = a.length();
  int yl = b.length();

  if(xl > yl && x.substring(yl, xl).equals(y)) return true;
  if(xl < yl && y.substring(xl, yl).equals(x)) return true;
  if(xl == yl && x.equals(y)) return true;
  else return false;
}

1 个答案:

答案 0 :(得分:2)

您使用的子字符串的重载版本是不必要的,因为您需要做的就是检查其中一个字符串是否以另一个字符串结束。

  • 如果xl大于yl,您只需要做的就是 x.substring(xl-yl).equals(y),表示您的子字符串应从xl-yl开始,直到String结束。
  • 如果xl小于yl,您只需要y.substring(yl-xl).equals(x),这意味着您的子字符串应从yl-xl开始,直到String结束}。

完整解决方案:

public boolean endOther(String a, String b) {
        String x = a.toLowerCase();
        String y = b.toLowerCase();
        int xl = a.length();
        int yl = b.length();

        if(xl > yl && x.substring(xl-yl).equals(y)) return true;
        if(xl < yl && y.substring(yl-xl).equals(x)) return true;
        if(xl == yl && x.equals(y)) return true;
        else return false;
}

但是,如评论中所述,您最好使用String#endsWith