codingbat xyx总是返回false

时间:2017-10-17 17:21:50

标签: java

public boolean xyzThere(String str) {
  for (int i=0; i < str.length()-3; i++){
    if (str.substring(i+1, i+4) == "xyz" && str.charAt(i) != '.'){
      return true;
    }
  }
  return false;
}

以上功能总是返回false,无法解决原因。我正在阅读codingbat.com Java练习,这里有简要说明:

  

如果给定的字符串包含“xyz”的外观,则返回true,其中xyz不直接以句点(。)开头。所以“xxyz”计算但“x.xyz”不计算。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

您不能使用==进行字符串比较。它将比较字符串的引用。

public static boolean xyzThere(String str) {
      for (int i=0; i < str.length()-3; i++){
        if ("xyz".equalsIgnoreCase(str.substring(i+1, i+4)) && str.charAt(i) != '.'){
          return true;
        }
      }
      return false;
}

试试这个。