2014-09-04 108 views
2

好吧,所以我遇到了一個小問題,我不完全確定如何正確地說出問題,所以標題可能有點誤導。此外,我遇到的代碼只是較大代碼的一小部分,所以我會盡我所能解釋我的情況。將局部變量中的動態int值存儲爲靜態?

基本上,這段代碼是一個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現在的變量,並關注h

我試圖做的是取高度減1(h - 1)的值並將其存儲在本地變量,然後將其減1(列 - = 1)所以該值將在下次循環運行和IF語句條件滿足時更新。

這裏的問題是高度是一個動態變量 - 在代碼的其餘部分中,它總是在不斷變化,因此,我的代碼只會在第一次運行時運行,並且第二次運行時, t似乎都在減少。

所以我的問題是:我怎麼能存儲高度的當前值到一個局部變量,並使其靜態的(保持相同的值在整個循環),這樣我可以成功地減小了嗎?

很抱歉,如果這是解釋不當,請,如果我使用的任何條款錯誤指正。

謝謝你的時間!

回答

2

可能要做一個編輯或兩個,如果我誤解了這個問題,但在這裏我得到了根據我初步瞭解了什麼。

只需要h值的for循環這裏做了第一次經歷。在第一次(以及所有時間)結束時,它將該值保存到全局變量中。在隨後的迭代中,保存的值將被檢索並重新使用,而不是h。

有一個全局變量isFirstTimeThroughLoop或類似的,設置爲true,全局int或你叫做lastValueOfHeight或什麼,沒有初始化。

在循環...

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

然後在你的循環結束後,請務必保存tempHeight值回lastValueOfHeight

lastValueOfHeight = tempHeight; 

讓我知道如果我誤解了什麼所以我可以幫助更多!

+0

有一件事你誤會了!儘管我確實說過我目前擁有的代碼只會在第一次運行時運行,但我並不是說第一次運行WHOLE循環,但是第一次調用* column *變量時,也就是IF(array [i] == 1)聲明是真實的。 或者這只是我誤解你的解決方案。無論哪種方式,我有點不確定如何實現你的代碼到我的! – antonlab 2014-09-04 10:46:45

+0

NEVERMIND!我得到它的工作!非常感謝你:) – antonlab 2014-09-04 11:22:18

+0

編輯:它適用於*列*變量,但我沒有提到,我有一個副本的代碼正好在我發佈的一個下面,並且一切都是相同的,除了IF語句是(數組[ i] == 2),而WHILE循環中的參數正在調用* column2 *。 因此,如果我嘗試調用tempHeight * column2 *,它不會是正確的高度。對於column2, – antonlab 2014-09-04 11:42:44

相關問題