我在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;。为什么呢?
答案 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;
问候 拉尔夫