gpt4 book ai didi

java - 变量赋值和循环

转载 作者:行者123 更新时间:2023-11-29 06:21:10 25 4
gpt4 key购买 nike

前一段时间,我正在开发一个将值散列到哈希表中的程序(我不记得具体细节,具体细节本身与手头的问题无关)。不管怎样,我有以下代码作为“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[] -- 每个术语都被定义为“tempElement”-- 当循环终止时,数组中的每个槽都填充了 tempElement 所采用的最后一个值。

我能够通过在 while 循环中移动 tempElement 的声明来修复这个错误。 Stackoverflow,我想问你的问题是,是否有另一种(读作:更好的)方法可以避免此错误,同时将 tempElement 的变量声明保留在 while 循环之外。

最佳答案

为什么要将变量声明保留在 while 循环之外?无论如何,你可以,只要你每次都将它分配给一个新的 hashElement:

hashElement tempElement;
while (/*...*/) {
tempElement = new hashElement();
//...

虽然它肯定不是“更好”。一般来说,尽可能缩小变量的范围。

关于java - 变量赋值和循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2990772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com