Closed. This question needs debugging details。它当前不接受答案。












想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。

3年前关闭。





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

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方法的任何解释将不胜感激

最佳答案

有两种可能的解释(我是说,有很多解释,但我认为这两项很适合首先进行检查):


实际上从未与i==3j==0进行比较(即使您认为如此)。
theClass[0]theClass[3]实际上并不相等(即使您认为它们相等)。


您可以轻松地检查这两种情况,例如在调试器的帮助下。如果您不喜欢使用调试器,则还可以插入一些System.out.println语句来检查变量ij实际采用的值以及theClass[0].equals(theClass[3])实际计算为true的值。

09-26 22:38