先看一段簡單的代碼:java
int sum = 0; int n = 5; for (int i = 1; i <= n; i++) { sum += i; } System.out.println(sum);
這段代碼的含義是什麼?求和:sum = 1 + 2 + 3 + .. + n,當前n爲5。spa
這段代碼是怎麼執行呢?code
從程序的執行步驟中,咱們能夠看出for循環執行的步驟爲3-7步,組成結構:
for ( 1; 2; 4) {
3
}
其中:
1爲聲明變量階段,在for循環中執行一次;
2爲邏輯判斷,控制for循環是否繼續;
3爲循環體,須要循環執行的語句;
4爲循環以後的操做。在6執行完i++後,須要從新在4判斷當前i是否還小於等於n,若是不成立則再也不執行5,反之則繼續重複循環。for循環
當理解完畢這段程序後,咱們對場景稍做調整:
求和:sum = 1 + 2 + 3 + .. + n,若是遇到3的倍數,則跳過不計算。class
調整後代碼以下:變量
int sum = 0; int n = 5; for (int i = 1; i <= n; i++) { if (i % 3 == 0) continue; sum += i; } System.out.println(sum);
經過對比,發現多了語句【if (i % 3 == 0) continue;】,這句話是什麼含義?進階
若是i取餘3爲0,則跳過當前循環體(sum += i),繼續執行i++。循環
如此以來,執行步驟變動爲:語法
【引入知識】
i / 3 表示:i除以3;i % 3 表示i除以3的餘數,稱做取模。程序
那若是場景變化以下,又該如何處理呢?
求和:sum = 1 + 2 + 3 + .. + n,若是數字大於4,則跳過不計算。
int sum = 0; int n = 5; for (int i = 1; i <= n; i++) { if (i > 4) continue; sum += i; } System.out.println(sum);
當咱們發現i從5開始大於4,接下來的i每次疊加後都會大於4。即當i大於4後,sum+=i;就永遠不會被執行到了。
這個時候,咱們就能夠使用break,它的意思,正如咱們但願的:跳出當前for循環,再也不執行for循環體的內容。
int sum = 0; int n = 5; for (int i = 1; i <= n; i++) { if (i > 4) break; sum += i; } System.out.println(sum);
如此以來,執行步驟變動爲:
以上,咱們就理解了for循環,以及continue、break語法。
1. 使用嵌套for循環,輸出以下圖形:
*
**
***
代碼以下:
for (int i = 0; i < n; i++) { for (int j = 0; j < i; j++) { System.out.print("*"); } System.out.println(); }
2. 當咱們在使用break語法的時候,其實代碼也能夠這樣寫。
PS:因爲咱們想解釋break的做用,因此並無考慮在實際中的應用。
int sum = 0; int n = 5; for (int i = 1; i <= n && i <= 4; i++) { sum += i; } System.out.println(sum);