04迴圈結構(while/do-while/for)
1.while迴圈
1.語法:
}
2.用途:while便於處理迴圈次數確定或者迴圈次數不確定的情況
3.使用的必要條件
(1)計數器初始化
(2)判斷條件
(3)迴圈體
(4)計數器變化
4.while執行過程
(1)計數器初始化,並且只執行一遍
(2)執行判斷條件
(3)如果條件成立 執行的程式碼
(4)計數器變化
(5)轉到第二步繼續執行
5.死迴圈產生的原因
(1)計數器沒有變化
(2)條件寫為true
package com.qfedu.test1; importjava.util.Scanner; public class Test4 { public static void main(String[] args) { // 每天檢查 是否合格 上午閱讀理論 下午敲程式碼 // while迴圈可以處理迴圈此固定 和 迴圈次數不固定的情況 Scanner input = new Scanner(System.in); System.out.println("上午閱讀教材"); System.out.println("下午敲程式碼"); System.out.println("請輸入你今天學習任務是否合格了?Y/N"); String answer = input.next(); while(answer.equals("N")) { //迴圈體 閱讀教材 敲程式碼 System.out.println("上午閱讀教材"); System.out.println("下午敲程式碼"); System.out.println("請輸入你今天學習任務是否合格了?Y/N"); answer = input.next(); } System.out.println("恭喜你完成任務"); } }
2.do-while迴圈
語法:
do {
迴圈體
} while ( 迴圈條件 );
1.用途:do-while也可以用於處理迴圈次數確定或者次數不確定去情況
do-while迴圈先執行再判斷,不管條件是否成立,至少執行一次
2.不管是while迴圈還是do-while迴圈不可少的部分 (1)計數器 (2)判斷條件 (3)迴圈體 (4)計數器變化
3.執行過程
(1)執行迴圈體
(2)計數器變化
(3)判斷條件
(4)如果條件成立,繼續執行迴圈體
package com.qfedu.test2; import java.util.Scanner; public class Test1 { public static void main(String[] args) { // 先上機測試 測試以後再檢查是否合格 不合格繼續上機 合格的話停止 // do-while 和 while迴圈 // while是先判斷後執行 如果條件不成立 一次都不執行 // do-while 先執行 後判斷 不管條件是否成立 至少執行 先斬後奏 Scanner input = new Scanner(System.in); // do { // 迴圈體 // }while(布林表示式); String answer; do { System.out.println("上級測試完成……"); System.out.println("請輸入是否合格?Y/N"); answer = input.next(); }while(answer.equals("N")); System.out.println("恭喜你完成任務"); } }
3.for迴圈
語法:
for(計數器初始化; 判斷條件 ; 計數器變化) {
迴圈體;
}
1.for迴圈執行過程
(1)計數器初始化 int j = 1 最先執行 並且只執行一次
(2)判斷條件 j <= 100
(3)迴圈體 System.out.println("for迴圈好好學習" + j);
(4)執行變數變化 j++
(5)接著繼續執行 判斷條件 也就是第二步
package com.qfedu.test4; import java.util.Scanner; public class Test1 { public static void main(String[] args) { // main alt + / // alt + / 程式碼提示快捷鍵 // sout alt + / // syso alt + / Scanner input = new Scanner(System.in); // 需求 迴圈錄入5門成績你計算平均分 double scoreSum = 0;// 用於儲存所有的分數 之和 for(int i = 1; i <= 5 ; i ++) { System.out.println("請輸入第" + i + "門成績"); int score = input.nextInt(); System.out.println("第" + i + "門成績是" + score); scoreSum += score; } System.out.println("總分數" + scoreSum); System.out.println("平均分是" + scoreSum / 5); } }
4.break關鍵字
使用場景:
(1)switch,表示跳出當前case塊0)
(2)迴圈中,表示跳出當前迴圈
如果迴圈中有switch,那麼switch中的break依然只是跳出case塊,不會跳出迴圈。
break在迴圈中通常結合流程控制語句來使用,表示中斷迴圈,沒有執行完的迴圈次數,不再執行。
package com.qfedu.test6; import java.util.Scanner; public class Test1 { public static void main(String[] args) { // 需求 迴圈錄入成績 計算平均分 如果輸入為負數 那麼停止錄入 Scanner input = new Scanner(System.in); double sum = 0; int i = 1; for (; i <= 5; i++) { System.out.println("請輸入第 " + i + "門成績"); int score = input.nextInt(); if(score < 0) { System.out.println("分數錄入錯誤,停止錄入"); break; } sum += score; } System.out.println("總分數是" + sum); System.out.println("平均分是" + sum / i); } }
5.continue關鍵字
適用場景:只能在迴圈中使用
continue表示跳出本次迴圈,繼續執行下一次迴圈,通常也是結合流程控制語句來使用
注意和break的區別
package com.qfedu.test7; import java.util.Scanner; public class Test1 { public static void main(String[] args) { // 迴圈錄入5門成績 統計分數大於80 所佔的比例 // 大於80分的人數 除以 總人數 double count = 0; Scanner input = new Scanner(System.in); for (int i = 1; i <= 5; i++) { System.out.println("請輸入第"+ i +"門成績"); int score = input.nextInt(); if(score <= 80) { System.out.println("當前分數不大於80,不進行記錄"); continue; } count++; } System.out.println("當前大於80分的人數是" + count); System.out.println("大於80分的人數佔比是" + (count / 5 * 100) + "%"); } }
6.debug除錯
作用:當我們的程式程式碼過多,我們無法一眼看完程式的執行結果,可以使用debug,或者當我們的程式產生bug,而我們無法快速定位到出錯的程式碼,可以使用debug
斷點:在程式碼左側雙擊打斷點,表示我們的程式將在斷點停止