【发布时间】:2011-02-28 18:22:25
【问题描述】:
不久前,我正在开发一个将值散列到散列表中的程序(我不记得具体内容,具体内容本身与手头的问题无关)。无论如何,我将以下代码作为“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
这部分代码给了我一个非常讨厌的错误——无论我如何修改它,无论我给程序提供什么输入,它总是会产生一个只有一个值的数组——最后一个.
问题,正如我后来确定的那样,是因为我没有在循环中创建 tempElement 变量,并且因为直到循环结束后才将值分配给elementArray[] - 每个术语都被定义而不是as "tempElement" -- 当循环终止时,数组中的每个槽都填充了 tempElement 所取的最后一个值。
我可以通过在 while 循环中移动 tempElement 的声明来修复这个错误。 Stackoverflow,我的问题是是否有另一种(阅读:更好的)方法来避免这个错误,同时将 tempElement 的变量声明保留在 while 循环之外。
【问题讨论】:
-
您最好了解 Java 编码约定:java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html。类名应以大写字母开头。
标签: java loops variable-assignment