使用.equals()比较字符串数组的两个元素

时间:2016-11-12 23:17:41

标签: java arrays equals

我正在研究一个项目,我需要比较同一个数组的两个元素

private void checkImports()
{
    //import tester
    for(int i = 0; i<theClass.length;i++)
    {   
        for(int j = 0; j<i; j++)
            {
                if(theClass[i].equals(theClass[j]))
                    {
                            System.out.println("There is a double import at line " +i);
                            addError("Double import at line ",i)
                    }
            }
    }
}

数组中填充了以下字符串:

"import java.x;" //0
"import java.y;" //1
"import java.z;" //2
"import java.x;" //3

由于某些原因,当我调用equals()方法时,当i = 3且j = 0时,它永远不会计算为true。 关于为什么从不调用addError方法的任何解释都将非常感激

1 个答案:

答案 0 :(得分:1)

有两种可能的解释(我的意思是,有很多解释,但我认为这两种解释首先适用于检查):

  1. i==3j==0的比较从未实际执行过(即使您认为是这样)。
  2. theClass[0]theClass[3]实际上并不相等(即使您认为它们是相同的。)
  3. 您可以轻松检查这两种情况,例如,在调试器的帮助下。如果您不喜欢使用调试器,还可以插入一些System.out.println语句来检查变量ij实际假设的值以及theClass[0].equals(theClass[3])实际评估的值到true