字符串中子字符串的出现次数(Java)

时间:2014-09-27 22:20:34

标签: java string substring equals

我在Java中的目标是返回" cat"的出现次数。在一个字符串中等于" dog"。

的出现次数
public boolean catDog(String str) {
   int matches = 0, matches2 = 0;
   for(int i = 0; i < str.length()-2; ++i)
   {
     if(str.substring(i,i+3)=="cat")++matches;
     if(str.substring(i,i+3)=="dog")++matches2;
   }
  if(matches==matches2)return true;
  return false;
}

它总是返回true(可能不是递增计数器),除非str完全是&#34; dog&#34;或者&#34; cat&#34;。为什么呢?

3 个答案:

答案 0 :(得分:1)

啊,搞砸了一下,发现你需要.equals(和#34; cat&#34;),而不是==。

答案 1 :(得分:0)

因为您要将字符串与==进行比较,所以您应该使用.equals(..)

此外,无需扫描每个字符串一个字符。只需使用

public int indexOf(String str, int fromIndex)

这样你就可以在每一步跳过更多的角色。例如:

for (int i = 0; i < str.length(); /* do nothing */)
{
  int x == str.indexOf("dog", 0);
  if (x == -1)
  {
    // no more occurrences
  }
  else
  {
    i = x + "dog".length();
  }
}

答案 2 :(得分:0)

你的想法似乎是正确的,但比较字符串过去很棘手。试试

if(str.substring(i,i+3).equals("cat")) ++matches;

问候 拉尔夫