将局部变量中的动态int值存储到静态?

时间:2014-09-04 04:26:48

标签: java loops for-loop while-loop nested-loops

好吧所以我遇到了一个小问题而且我不完全确定如何正确地说出这个问题所以标题可能有点误导。此外,我遇到问题的代码只是较大代码的一小部分,所以我会尽力解释我的情况。

基本上,这段代码处于for循环中,我试图做的是每次循环运行时使某个变量减少一定数量。

int column = h - 1;

if (array[i] == 1)
{
   while (d < column - 1)
   {
      r.lower();
      d++
   }
   if (d == column - 1)
   {
      r.drop();
      column -=1;
   }
}

抱歉,如果它看起来有点神秘。暂时忘掉 d r 变量,然后关注 h

我尝试做的是取高度值减一(h - 1)并将其存储在局部变量中,然后将其减1 (column - = 1)因此,下次循环运行并满足IF语句条件时,将更新该值。

这里的问题是高度是一个动态变量 - 在整个代码的其余部分它不断变化,因此,我的代码只会在第一次运行时,当它第二次运行时,它不会#39 ; t似乎完全减少了。

所以我的问题是:如何将高度的CURRENT值存储到局部变量中,并将其设置为静态(在整个循环中保持相同的值)以便我可以成功减少它?

很抱歉,如果说得不好解释,如果我错误地使用任何条款,请纠正我。

谢谢你的时间!

1 个答案:

答案 0 :(得分:2)

如果我误解了这个问题,可能需要进行一两次编辑,但这是基于我最初的理解而得到的。

这样做只会在第一次通过时获取for循环的h值。在第一次结束时(以及所有时间),它将值保存到全局变量。在后续迭代中,将检索该已保存的值并再次使用而不是h。

有一个全局变量isFirstTimeThroughLoop等,设置为true,一个全局int或你调用lastValueOfHeight或者其他什么,没有初始化。

在循环中......

int tempHeight;
if(isFirstTimeThroughLoop)
{
    tempHeight = h; //your value of h
    isFirstTimeThroughLoop = false;
}
else
{
    tempHeight = lastValueOfHeight;
}

然后在循环结束时,确保将tempHeight的值存储回lastValueOfHeight

lastValueOfHeight = tempHeight;

如果我误解了任何内容,请告诉我,以便我可以提供更多帮助!