文本關鍵字:基本結構、循環結構、while、do-while、forjava
爲了講解方便,咱們能夠將循環結構劃分爲四個部分來進行描述。固然,這四個部分並非都要出現,甚至在都不出現時也能夠構成一個循環結構。而且,對於不一樣的循環結構,每一個部分的相對位置也不一樣。dom
在進入循環結構以前能夠定義一些循環中以及循環結束後都要用到的變量,進行賦值。ide
用於決定是否繼續進行循環,若是爲假,則循環結束。判斷部分能夠直接使用一個布爾類型的變量,或者使用表達式,可是必須保證表達式的結果爲布爾類型。工具
循環結構的核心部分,用於書寫每次想要重複執行的代碼,一般要根據程序功能來設計。設計
用於輔助控制循環的結束,在循環體以後執行,如變量自增等。
與判斷結構相似,當不使用大括號時,循環結構只能控制一行代碼,一般咱們會添加大括號code
[初始化部分] while(條件判斷部分){ 循環體 [迭代部分] }
對於while循環,一般用於循環次數不肯定時,如:讓使用者決定何時退出循環。blog
public static void main(String[] args){ // 初始化部分 int i = 1; // 括號中爲循環繼續執行的條件:當i的值小於等於9時 while(i <= 9){ // 循環體部分 System.out.println(i); // 迭代部分:輔助控制循環結束或根據循環體的須要來寫 i++; } }
import java.util.Scanner; import java.util.Random; public class Test{ public static void main(String[] args){ // 初始化Scanner,用於從鍵盤讀入數據 Scanner sc = new Scanner(System.in); // 初始化隨機數生成工具 Random random = new Random(); // 隨機生成一個0~99的整數 int n = random.nextInt(100); // 定義一個布爾類型的變量,用於控制循環的結束 boolean flag = true; // 使用flag做爲控制循環結束的變量 while(flag){ System.out.println("請輸入一個數:"); // 從鍵盤讀取一個數 int temp = sc.nextInt(); // 判斷輸入的數是否與隨機數相同,猜中則退出 if(temp == n){ System.out.println("猜中了!"); // 修改flag爲false,使得循環退出 flag = false; }else{ // 若是沒有猜中,就讓用戶本身決定是否是要繼續猜 System.out.println("猜錯了!還要繼續嗎?1:繼續2:退出"); // 若是輸入的數字爲2則退出(此處暫不考慮輸入出錯等其餘狀況) if(sc.nextInt() == 2){ // 修改flag爲false,使得循環退出 flag = false; } } } // 使用後關閉 sc.close(); } }
[初始化部分] do{ 循環體 [迭代部分] }while(條件判斷部分);
do-while循環與while循環的用法基本相同,主要的不一樣點在於循環體(迭代部分)必定會先執行一次,而後再進行判斷,這很是適合在初學時作成菜單程序。it
break只能跳出離本身最近一層的switch-case或循環結構,若是想直接跳出指定層的循環,須要使用到自定義標籤。自定義標籤的用法比較簡單,直接在一個循環結構的起始位置加一個單詞,配合冒號使用,在進行跳出時,能夠在break後面添加自定義標籤的名稱,便可跳出指定層的循環。for循環
import java.util.Scanner; public class Test{ public static void main(String[] args){ // 初始化Scanner,用於從鍵盤讀入數據 Scanner sc = new Scanner(System.in); // 在此處使用自定義標籤out(名稱能夠自定義)來進行標記 out:do{ System.out.println("****歡迎使用xxx系統****"); System.out.println("****1.系統功能一*******"); System.out.println("****2.系統功能二*******"); System.out.println("****3.退出系統*********"); System.out.print("請輸入功能選項:"); // 從鍵盤讀入一個數選擇要執行的功能 int select = sc.nextInt(); switch(select){ case 1: // 功能一相關代碼 break; case 2: // 功能二相關代碼 break; case 3: // 指定跳出外層的do-while循環,不然只能跳出當前的switch-case結構 break out; } // 判斷條件一直爲真,除非用戶輸入選項3退出系統,則使用break跳出。 }while(true); // 使用後關閉 sc.close(); } }
for(初始化部分;條件判斷部分;迭代部分){ 循環體 }
for循環主要用於循環次數肯定的狀況,一般使用break直接跳出循環是因爲已經完成了所需工做,終止剩餘無用循環以提升程序運行效率。程序設計
public static void main(String[] args){ // 定義一個整數類型變量,用於記錄結果 int sum = 0; for(int i = 1;i <= 10;i++){ // 根據邏輯,將每次獲得的值相加 sum += i; } // 輸出計算結果 System.out.println(sum); }
public static void main(String[] args){ for(int i = 0;i <= 100;i++){ // 判斷當前數字的奇偶性,若是是奇數則跳過輸出語句 if(i % 2 != 0){ // 若是是奇數,將跳過循環體剩餘的部分,迭代部分不受影響 continue; } System.out.println(i); } // 輸出計算結果 System.out.println(sum); }
死循環的出現是因爲咱們沒有正確的指定循環的終止條件和控制相關的變量,致使判斷條件部分一直爲真,使得循環結構沒法結束。但有些時候根據功能須要咱們會手動先構造一個死循環,而後使用break來進行跳出,如:菜單程序,由用戶來決定何時結束,進行循環的跳出。手動構建一個死循環十分簡單,可是若是意外的出現死循環就須要優先檢查條件判斷部分以及相關變量的變化了。
while(true){ 循環體 }
do{ 循環體 }while(true)
// 是的,你沒有看錯,全部的部分都不須要填寫,可是分號不能省略 for(;;){ 循環體 }