Closed. This question needs debugging details。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
3年前关闭。
我正在做一个项目,我需要比较同一数组的两个元素
该数组填充以下字符串:
出于某种原因,当我调用equals()方法时,当i = 3和j = 0时,它永远不会评估为true。
为何不调用addError方法的任何解释将不胜感激
想改善这个问题吗? 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==3
和j==0
进行比较(即使您认为如此)。
值theClass[0]
和theClass[3]
实际上并不相等(即使您认为它们相等)。
您可以轻松地检查这两种情况,例如在调试器的帮助下。如果您不喜欢使用调试器,则还可以插入一些System.out.println
语句来检查变量i
和j
实际采用的值以及theClass[0].equals(theClass[3])
实际计算为true
的值。
09-26 22:38