【问题标题】:Store dynamic int value in local variable to static?将局部变量中的动态int值存储到静态?
【发布时间】:2014-10-28 17:16:47
【问题描述】:

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

基本上,这段代码在一个 for 循环中,我试图让它在每次循环运行时使某个变量递减某个数字。

int column = h - 1;

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

对不起,如果它看起来有点神秘。暂时忘记 dr 变量,专注于 columnh

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

这里的问题是高度是一个动态变量 - 在其余代码中它一直在不断变化,因此,我的代码只能在第一次运行,而在第二次运行时,它不会似乎完全减少了。

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

抱歉,如果我解释得不好,如果我用错了任何术语,请纠正我。

感谢您的宝贵时间!

【问题讨论】:

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


    【解决方案1】:

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

    这只是在第一次通过时为 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;
    

    如果我误解了什么,请告诉我,以便我提供更多帮助!

    【讨论】:

    • 你误会了一件事!虽然我确实说过我目前拥有的代码仅在第一次运行时才有效,但我并不是指整个循环第一次运行,而是第一次调用 column 变量时,即当 IF (array[i] == 1) 语句为真时。或者也许只是我误解了你的解决方案。无论哪种方式,我都不确定如何将您的代码实现到我的代码中!
    • 编辑:它适用于 column 变量,但我没有提到我在我发布的代码下面有一段重复的代码,除了IF 语句是 (array[i] ==2) 并且 WHILE 循环中的参数正在调用 column2 。因此,如果我尝试为 column2 调用 tempHeight,它的高度将不会是正确的。
    • 对于column2,在递减之前是否需要使用与column1相同的高度?
    • 高度不同,但变量(h)相同。如果有任何意义,当 column2 调用 h 时,应该假定 h 的值是不同的。
    猜你喜欢
    • 2013-12-14
    • 2018-08-05
    • 1970-01-01
    • 1970-01-01
    • 2018-08-02
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多