更新時間:2021-10-13 來源:黑馬程序員 瀏覽量:
循環(huán)語句可以在滿足循環(huán)條件的情況下,反復(fù)執(zhí)行某一段代碼,這段被重復(fù)執(zhí)行的代碼被稱為循環(huán)體語句,當(dāng)反復(fù)
執(zhí)行這個循環(huán)體時,需要在合適的時候把循環(huán)判斷條件修改為false,從而結(jié)束循環(huán),否則循環(huán)將一直執(zhí)行下去,形成死循環(huán)。
for循環(huán)格式:
for (初始化語句;條件判斷語句;條件控制語句) { 循環(huán)體語句; }
格式解釋:
初始化語句: 用于表示循環(huán)開啟時的起始狀態(tài),簡單說就是循環(huán)開始的時候什么樣
條件判斷語句:用于表示循環(huán)反復(fù)執(zhí)行的條件,簡單說就是判斷循環(huán)是否能一直執(zhí)行下去
循環(huán)體語句: 用于表示循環(huán)反復(fù)執(zhí)行的內(nèi)容,簡單說就是循環(huán)反復(fù)執(zhí)行的事情
條件控制語句:用于表示循環(huán)執(zhí)行中每次變化的內(nèi)容,簡單說就是控制循環(huán)是否能執(zhí)行下去
執(zhí)行流程:
①執(zhí)行初始化語句
②執(zhí)行條件判斷語句,看其結(jié)果是true還是false,如果是false,循環(huán)結(jié)束,如果是true,繼續(xù)執(zhí)行
③執(zhí)行循環(huán)體語句
④執(zhí)行條件控制語句
⑤回到②繼續(xù)
for循環(huán):輸出數(shù)據(jù)
需求:在控制臺輸出1-5和5-1的數(shù)據(jù)
示例代碼:
public class ForTest01 { public static void main(String[] args) { //需求:輸出數(shù)據(jù)1-5 for(int i=1; i<=5; i++) { System.out.println(i); } System.out.println("--------"); //需求:輸出數(shù)據(jù)5-1 for(int i=5; i>=1; i- ) { System.out.println(i); } } }
for循環(huán):求和
需求:求1-5之間的數(shù)據(jù)和,并把求和結(jié)果在控制臺輸出
示例代碼:
public class ForTest02 { public static void main(String[] args) { //求和的最終結(jié)果必須保存起來,需要定義一個變量,用于保存求和的結(jié)果,初始值為0 int sum = 0; //從1開始到5結(jié)束的數(shù)據(jù),使用循環(huán)結(jié)構(gòu)完成 for(int i=1; i<=5; i++) { //將反復(fù)進行的事情寫入循環(huán)結(jié)構(gòu)內(nèi)部 // 此處反復(fù)進行的事情是將數(shù)據(jù) 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; */ } //當(dāng)循環(huán)執(zhí)行完畢時,將最終數(shù)據(jù)打印出來 System.out.println("1-5之間的數(shù)據(jù)和是:" + sum); } }
要點:今后遇到的需求中,如果帶有求和二字,請立即聯(lián)想到求和變量求和變量的定義位置,必須在循環(huán)外部,如果在循環(huán)內(nèi)部則計算出的數(shù)據(jù)將是錯誤的。
for循環(huán):求偶數(shù)和
需求:求1-100之間的偶數(shù)和,并把求和結(jié)果在控制臺輸出 }
示例代碼:
public class ForTest03 { public static void main(String[] args) { //求和的最終結(jié)果必須保存起來,需要定義一個變量,用于保存求和的結(jié)果,初始值為0 int sum = 0; //對1-100的數(shù)據(jù)求和與1-5的數(shù)據(jù)求和幾乎完全一樣,僅僅是結(jié)束條件不同 for(int i=1; i<=100; i++) { //對1-100的偶數(shù)求和,需要對求和操作添加限制條件,判斷是否是偶數(shù) if(i%2 == 0) { sum += i; } } //當(dāng)循環(huán)執(zhí)行完畢時,將最終數(shù)據(jù)打印出來 System.out.println("1-100之間的偶數(shù)和是:" + sum); } }
for循環(huán)練習(xí):水仙花
需求:在控制臺輸出所有的“水仙花數(shù)”
解釋:什么是水仙花數(shù)?
水仙花數(shù),指的是一個三位數(shù),個位、十位、百位的數(shù)字立方和等于原數(shù)
例如 153 3*3*3 + 5*5*5 + 1*1*1 = 153
思路:
1. 獲取所有的三位數(shù),準備進行篩選,最小的三位數(shù)為100,最大的三位數(shù)為999,使用for循環(huán)獲取
2. 獲取每一個三位數(shù)的個位,十位,百位,做if語句判斷是否是水仙花數(shù)
示例代碼:
public class ForTest04 { public static void main(String[] args) { //輸出所有的水仙花數(shù)必然要使用到循環(huán),遍歷所有的三位數(shù),三位數(shù)從100開始,到999結(jié)束 for(int i=100; i<1000; i++) { //在計算之前獲取三位數(shù)中每個位上的值 int ge = i%10; int shi = i/10%10; int bai = i/10/10%10; //判定條件是將三位數(shù)中的每個數(shù)值取出來,計算立方和后與原始數(shù)字比較是否相等 if(ge*ge*ge + shi*shi*shi + bai*bai*bai == i) { //輸出滿足條件的數(shù)字就是水仙花數(shù) System.out.println(i); } } } }
for循環(huán)練習(xí):統(tǒng)計水仙花數(shù)個數(shù)
需求:統(tǒng)計“水仙花數(shù)”一共有多少個,并在控制臺輸出個數(shù)
示例代碼:
public class ForTest05 { public static void main(String[] args) { //定義變量count,用于保存“水仙花數(shù)”的數(shù)量,初始值為0 int count = 0; //輸出所有的水仙花數(shù)必然要使用到循環(huán),遍歷所有的三位數(shù),三位數(shù)從100開始,到999結(jié)束 for(int i=100; i<1000; i++) { //在計算之前獲取三位數(shù)中每個位上的值 int ge = i%10; int shi = i/10%10; int bai = i/10/10%10; //在判定水仙花數(shù)的過程中,滿足條件不再輸出,更改為修改count的值,使count+1 if(ge*ge*ge + shi*shi*shi + bai*bai*bai == i) { count++; } } //打印輸出最終結(jié)果 System.out.println("水仙花共有:" + count + "個"); } }
要點:今后如果需求帶有統(tǒng)計xxx,請先想到計數(shù)器變量計數(shù)器變量定義的位置,必須在循環(huán)外部。
猜你喜歡:
為什么要使用foreach循環(huán)?它有哪些優(yōu)點和局限性?