一段时间以来,我一直在研究一个将值散列到散列表中的程序(我不记得具体情况,具体细节本身与问题无关)。不管怎么说,我有下面的代码为“recordInput”方法的一部分:变量赋值和循环
tempElement = new hashElement(someInt);
while(in.hasNext() == true)
{
int firstVal = in.nextInt();
if (firstVal == -911)
{
break;
}
tempElement.setKeyValue(firstVal, 0);
for(int i = 1; i<numKeyValues;i++)
{
tempElement.setKeyValue(in.nextInt(), i);
}
elementArray[placeValue] = tempElement;
placeValue++;
} // close while loop
} // close method
的这部分代码是给我一个非常讨厌的错误 - 无论我怎么finagled它,无论我所付出的投入该程序,它总是会产生一个只有一个值的数组 - 最后一个。
问题,正如我后来确定的那样,是因为我没有在循环中创建tempElement变量,并且因为在循环结束之前没有将值分配给elementArray[]
- 每个术语都定义为“tempElement” - 当循环结束时,数组中的每个插槽都充满了tempElement所拍摄的最后一个值。
我能够通过在while循环中移动tempElement的声明来修复此错误。我的问题,Stackoverflow,是否有另一种(更好的)方法来避免这个bug,同时保持tempElement的变量声明在while循环之外。
你最好了解Java编码惯例:http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html。类名应以大写字母开头。 – 2010-06-07 15:31:28