循環語句-for循環
-
循環:
循環語句可以在滿足循環條件的情況下,反復執行某一段代碼,這段被重復執行的代碼被稱為循環體語句,當反復 執行這個循環體時,需要在合適的時候把循環判斷條件修改為false,從而結束循環,否則循環將一直執行下去,形 成死循環。
-
for循環格式:
for (初始化語句;條件判斷語句;條件控制語句) { 循環體語句; }
-
格式解釋:
-
初始化語句: 用於表示循環開啟時的起始狀態,簡單說就是循環開始的時候什么樣
-
條件判斷語句:用於表示循環反復執行的條件,簡單說就是判斷循環是否能一直執行下去
-
循環體語句: 用於表示循環反復執行的內容,簡單說就是循環反復執行的事情
-
條件控制語句:用於表示循環執行中每次變化的內容,簡單說就是控制循環是否能執行下去
-
-
執行流程:
①執行初始化語句
②執行條件判斷語句,看其結果是true還是false
如果是false,循環結束
如果是true,繼續執行
③執行循環體語句
④執行條件控制語句
⑤回到②繼續
/*需求:在控制台輸出1-5和5-1的數據 */ public class ForTest01 { public static void main(String[] args) { //需求:輸出數據1-5 for(int i=1; i<=5; i++) { System.out.println(i); } System.out.println("--------"); //需求:輸出數據5-1 for(int i=5; i>=1; i--) { System.out.println(i); } } }

/*需求:求1-5之間的數據和,並把求和結果在控制台輸出 */ public class ForTest02 { public static void main(String[] args) { //求和的最終結果必須保存起來,需要定義一個變量,用於保存求和的結果,初始值為0 int sum = 0; //從1開始到5結束的數據,使用循環結構完成 for(int i=1; i<=5; i++) { //將反復進行的事情寫入循環結構內部 // 此處反復進行的事情是將數據 i 加到用於保存最終求和的變量 sum 中 sum += i; /* sum += i; sum = sum + i; 第一次:sum = sum + i = 0 + 1 = 1; 第二次:sum = sum + i = 1 + 2 = 3; 第三次:sum = sum + i = 3 + 3 = 6; 第四次:sum = sum + i = 6 + 4 = 10; 第五次:sum = sum + i = 10 + 5 = 15; */ } //當循環執行完畢時,將最終數據打印出來 System.out.println("1-5之間的數據和是:" + sum); } }
本題要點:
-
今后遇到的需求中,如果帶有求和二字,請立即聯想到求和變量
-
求和變量的定義位置,必須在循環外部,如果在循環內部則計算出的數據將是錯誤的
/*需求:求1-100之間的偶數和,並把求和結果在控制台輸出 }*/ public class ForTest03 { public static void main(String[] args) { //求和的最終結果必須保存起來,需要定義一個變量,用於保存求和的結果,初始值為0 int sum = 0; //對1-100的數據求和與1-5的數據求和幾乎完全一樣,僅僅是結束條件不同 for(int i=1; i<=100; i++) { //對1-100的偶數求和,需要對求和操作添加限制條件,判斷是否是偶數 if(i%2 == 0) { sum += i; } } //當循環執行完畢時,將最終數據打印出來 System.out.println("1-100之間的偶數和是:" + sum); } }

/* 需求:在控制台輸出所有的“水仙花數” 解釋:什么是水仙花數? - 水仙花數,指的是一個三位數,個位、十位、百位的數字立方和等於原數 - 例如153 3*3*3 + 5*5*5 + 1*1*1 = 153 思路: 1. 獲取所有的三位數,准備進行篩選,最小的三位數為100,最大的三位數為999,使用for循環獲取 2. 獲取每一個三位數的個位,十位,百位,做if語句判斷是否是水仙花數 */ public class ForTest04 { public static void main(String[] args) { //輸出所有的水仙花數必然要使用到循環,遍歷所有的三位數,三位數從100開始,到999結束 for(int i=100; i<1000; i++) { //在計算之前獲取三位數中每個位上的值 int ge = i%10; int shi = i/10%10; int bai = i/10/10%10; //判定條件是將三位數中的每個數值取出來,計算立方和后與原始數字比較是否相等 if(ge*ge*ge + shi*shi*shi + bai*bai*bai == i) { //輸出滿足條件的數字就是水仙花數 System.out.println(i); } } } }

/*需求:在控制台輸出所有的“水仙花數”,要求每行打印2個*/ public class Demo6For { /* 需求:在控制台輸出所有的“水仙花數”,要求每行打印2個 System.out.print (打印內容); 打印后不換行 System.out.println(打印內容); 打印后換行 分析: 1. 定義變量count,用於保存“打印過”的數量,初始值為0 2. 在判定和打印水仙花數的過程中,拼接空格, 但不換行,並在打印后讓count變量+1,記錄打印過的數量 3. 在每一次count變量+1后,判斷是否到達了2的倍數,是的話,換行。 */ public static void main(String[] args){ // 1. 定義變量count,用於保存“打印過”的數量,初始值為0 int count = 0; for(int i = 100; i <= 999; i++){ int ge = i % 10; int shi = i / 10 % 10; int bai = i / 10 / 10 % 10; if( (ge*ge*ge + shi*shi*shi + bai*bai*bai) == i){ // 2. 在判定和打印水仙花數的過程中,拼接空格, 但不換行,並在打印后讓count變量+1,記錄打印過的數量 System.out.print(i + " "); count++; // 3. 在每一次count變量+1后,判斷是否到達了2的倍數,是的話,換行 if(count % 2 == 0){ System.out.println(); } } } } }
本題要點:
-
今后如果需求帶有統計xxx,請先想到計數器變量
-