String[] splitArray = str.split("(?<=[dog,cat])");
int dogCounter = 0;
int catCounter = 0;
for(int i = 0; i < splitArray.length; i++) {
if (splitArray[i] == "dog") {
dogCounter += 1;
}
else if (splitArray[i] == "cat") {
catCounter += 1;
}
}
if (dogCounter == catCounter) {
return true;
}
else {
return false;
}
}
因此,此代码本质上采用了运行该函数时提供的字符串,并在dog和cat处将其分割,但实际上并未从该字符串中删除dog或cat,然后将其分配给一个数组,循环遍历该数组,以确定是否存在任何项等于cat或dog,然后将它们添加到各自的变量中,则cat和dog的插入次数相等,应该返回true,否则返回false。但是无论如何它总是返回true。
答案 0 :(得分:1)
使用equals方法进行字符串比较。
splitArray [i] .equals(“ dog”)
虽然您要比较的对象从来都不相同,但cat and dog counter始终为0。
最后结果是,两个计数器均为0,这导致返回true
答案 1 :(得分:0)
我相信问题是您正在使用==
来比较字符串。这在Java中并不总是有效,因此最好完全避免使用并使用.equals()
方法。如果您打印出dogCounter
和catCounter
的值,它们可能都是0