本節書摘來自異步社群《android遊戲開發詳解》一書中的第1章,第1.8節控制流程第2部分——while和for循環,作者 【美】jonathan s. harbour,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視
1.8 控制流程第2部分——while和for循環
android遊戲開發詳解
在前面的小節中,我們介紹了使用if和else語句塊來産生代碼分支。現在,我們來介紹兩種類型的循環:while循環和for循環。循環允許我們執行重複性的任務。循環特别重要,沒有它們,遊戲将無法運作。
1.8.1 while循環
假設你想要編寫一個函數列印出所有的正整數,直到達到給定的輸入n。解決這個問題的政策(算法)如下。
1. 建立一個新的整型,将其值初始化為1。
2. 如果該整數小于或等于給定的輸入n,列印其值。
3. 将該整數增加1。
4. 重複步驟2和步驟3。
我們已經學習了如何執行該算法的前3步。讓我們寫下已經知道的内容。
程式清單1.18 計數器(非完整版)
我們必須在代碼中解決兩個問題。首先,函數應該傳回什麼類型(通過程式清單1.18的第1行中的問号來表示)?它應該是一個int類型嗎?實際上,在我們的例子中,甚至沒有一條return語句;該函數并不會産生任何可供我們使用的結果。當沒有傳回任何值的時候,就像前面的函數那樣,我們說傳回類型是void。
其次,如何讓這段代碼重複步驟2和步驟3?這實際上很簡單。我們使用一個while循環,隻要某個條件能夠滿足,就會讓這個循環保持運作。在我們的例子中,所需要做的隻是用關鍵字“while”替代關鍵字“if”。完整的函數如程式清單1.19所示(修改的代碼突出顯示)。
程式清單1.19 計數器(完整版)
讓我們一行一行地來看看該函數(參見程式清單1.19)。
第1行聲明了函數的傳回類型(void)、函數名稱(countton)和輸入(n)。
第2行聲明了一個名為counter的新的整型,并且将其值初始化為1。
第3行開始一個while循環,隻要條件(counter <= n)滿足,它就會運作。
第4行列印出counter變量的目前值。
第5行将counter增加1。
當到達第5行的時候(第6行的花括号表示循環結束),代碼将再次執行第3行。這裡會重複,直到counter變得比n大,此時,會跳出while循環。要看看這是如何工作的,讓我們在代碼中的任意地方調用該函數。
這就是while循環。隻是編寫一條if語句,并且将關鍵字“while”放到那裡,代碼就可以重複一項任務了。
關鍵知識點
while循環
隻要給定的條件計算為true,while循環就将繼續疊代。如果我們有一個條件總是為true,例如,while (5 > 3) …,while循環将不會結束。這就是一個無限循環。
1.8.2 for循環
程式清單1.19中的計數邏輯的使用如此頻繁,以至于人們為此專門設計了一個循環。它叫作for循環。for循環的文法考慮到了各種問題的較為整潔的解決方案,使得我們能夠節省代碼行。如圖1-6所示。

for循環需要做3件事情。必須初始化計數器變量,設定終止條件,然後定義一個自增表達式。該循環将持續疊代(重複),直到終止條件計算為假(在上面的示例中,就是直到i大于6)。每次疊代之後,i都會按照自增表達式中給出的規則來遞增。
在程式清單1.19中使用一個for循環來計數重新編寫代碼的話,可以得到程式清單1.20。
程式清單1.20 計數器(for循環版)
一旦掌握了文法,編寫for循環比編寫while循環要快很多。for循環很快将會變為我們的無價之寶,并用來幹從移動精靈到渲染動畫的每一件事情。`