为什么此Java函数始终返回true?

时间:2020-03-17 20:31:53

标签: java function


 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。

2 个答案:

答案 0 :(得分:1)

使用equals方法进行字符串比较。

splitArray [i] .equals(“ dog”)

虽然您要比较的对象从来都不相同,但cat and dog counter始终为0。

最后结果是,两个计数器均为0,这导致返回true

答案 1 :(得分:0)

我相信问题是您正在使用==来比较字符串。这在Java中并不总是有效,因此最好完全避免使用并使用.equals()方法。如果您打印出dogCountercatCounter的值,它们可能都是0