我正在研究一个项目,我需要比较同一个数组的两个元素
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方法的任何解释都将非常感激
答案 0 :(得分:1)
有两种可能的解释(我的意思是,有很多解释,但我认为这两种解释首先适用于检查):
i==3
和j==0
的比较从未实际执行过(即使您认为是这样)。theClass[0]
和theClass[3]
实际上并不相等(即使您认为它们是相同的。)您可以轻松检查这两种情况,例如,在调试器的帮助下。如果您不喜欢使用调试器,还可以插入一些System.out.println
语句来检查变量i
和j
实际假设的值以及theClass[0].equals(theClass[3])
实际评估的值到true
。