子字符串在字符串中的出现次数(Java)
在Java中,我的目标是返回true,即字符串中出现“cat”的次数等于出现“dog”的次数子字符串在字符串中的出现次数(Java),java,string,substring,equals,Java,String,Substring,Equals,在Java中,我的目标是返回true,即字符串中出现“cat”的次数等于出现“dog”的次数 公共布尔catDog(String str){ int matches=0,matches2=0; 对于(int i=0;i
公共布尔catDog(String str){
int matches=0,matches2=0;
对于(int i=0;i
除非str正好是“dog”或“cat”,否则它总是返回true(可能不是递增计数器)。为什么?啊,把事情弄得一团糟,发现你需要.equals(“cat”),而不是==。因为你在比较字符串和
=
,而你应该使用.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();
}
}
for(int i=0;i
您的想法似乎是正确的,但字符串的比较过去很棘手。试一试
if(str.substring(i,i+3).equals("cat")) ++matches;
问候
拉尔夫啊,搞砸了一点,发现你需要的是。等于(“猫”),而不是==。你得到了。equals not==您还可以使用
.toLowerCase()
,否则您将找不到“猫”或“狗!”。
if(str.substring(i,i+3).equals("cat")) ++matches;