Java——循環(huán)結(jié)構(gòu)

什么是循環(huán)結(jié)構(gòu):

  • 循環(huán)是程序設(shè)計(jì)語言中反復(fù)執(zhí)行某寫代碼的一種計(jì)算機(jī)處理過程,是一組相同或相似語句被有規(guī)律的重復(fù)執(zhí)行。說白了就是反復(fù)執(zhí)行一段相同或相似的代碼

  • 循環(huán)三要素:

    • 循環(huán)變量的初始化

    • 循環(huán)的條件(以循環(huán)變量為基礎(chǔ))

    • 循環(huán)變量的改變(向著循環(huán)的結(jié)束變)

while語句的執(zhí)行邏輯:

  • 計(jì)算boolean表達(dá)式的值

  • 當(dāng)值為true則執(zhí)行語句塊,語句執(zhí)行完以后再次判斷boolean值,如果值還是為true則繼續(xù)執(zhí)行,如此循環(huán),直到boolean的值為false時(shí)退出while循環(huán)。

while語句案例演示:

public static void main(String[] args) {
    int num = 1; 
    while (num <= 9) {
        System.out.println(num + "*9=" + num * 9);
        num++; 
    }
    System.out.println("over");
}
說明:先判斷條件,在執(zhí)行,條件不滿足的時(shí)候,跳出循環(huán)。
  • 注:一般情況下,循環(huán)操作中會(huì)存在循環(huán)的條件不滿足的可能性,否則將成為死循環(huán)

while語句使用break案例演示:

public static void main(String[] args) {
    int i = 0;
    while (i < 10) {
        if (i == 5) {
            break;
        }
        System.err.println("i的值為:" + i);
        i++;
    }
}
說明:
    i的初始值為0,代碼進(jìn)入while塊中判斷,滿足條件,進(jìn)入if判斷,條件不滿足 i++,
    當(dāng)i通過自加到5的時(shí)候,滿足if塊的條件,用break跳出循環(huán)。

do-while語句:

  • 先計(jì)算boolean表達(dá)式,如果為true,再次執(zhí)行語句塊,如此循環(huán),直到為false為止。

do-while語句案例演示:

public static void main(String[] args) {
    // 模擬用戶登錄
    Scanner scan = new Scanner(System.in);
    int pwd = 123; // 初始密碼
    int i = 0;
    System.err.println("初始密碼:" + pwd);
    int guess; // 用戶輸入的密碼
    do {
        System.out.println("請(qǐng)輸入密碼!");
        System.out.println("輸入密碼共有3次機(jī)會(huì)!"); // 告訴用戶,輸出錯(cuò)誤密碼的次數(shù)
        guess = scan.nextInt();
        if (i == 2) { // 計(jì)算錯(cuò)誤密碼次數(shù)
            break; // 跳出循環(huán)
        }
        i++;
        System.err.println("密碼輸入錯(cuò)誤次數(shù)為:" + i);
    } while (guess != pwd);
    if (guess == pwd) {
        System.out.println("密碼正確");
    } else {
        System.out.println("密碼錯(cuò)誤");
    }
}
說明:
    先執(zhí)行do語句塊里的代碼,在判斷條件,條件為true時(shí),再次執(zhí)行語句塊,等條件為false時(shí),跳出循環(huán)。
  • while和do-while的區(qū)別

    • while:先判斷后執(zhí)行,有可能一次都不執(zhí)行

    • do-while:先執(zhí)行后判斷,至少會(huì)執(zhí)行一次

for語句的執(zhí)行邏輯:

for (int j = 0; j < args.length; j++) {
    String string = args[j];
}
說明:
for (表達(dá)式1;表達(dá)式2;表達(dá)式3) {
    語句塊(循環(huán)體)
}

for 語句案例演示:

for (int i = 0; i < 3; i++) {
    System.err.println("學(xué)習(xí)Java");
}
System.err.println("條件不滿足,程序結(jié)束");
說明:
    程序第一輪執(zhí)行順序:i=0,0<3(條件滿足),i++ 輸出循環(huán)體語句
    程序第二輪執(zhí)行順序:i=1,1<3(條件滿足),i++ 輸出循環(huán)體語句
    程序第三輪執(zhí)行順序:i=2,2<3(條件滿足),i++ 輸出循環(huán)體語句
    程序第四輪執(zhí)行順序:i=3,3<3(條件不滿足)程序結(jié)束

死循環(huán)案例演示:

for (;;) {
    System.err.println("學(xué)習(xí)Java");
}
說明:
    當(dāng)所有表達(dá)式為空時(shí),進(jìn)入死循環(huán)狀態(tài)

  • break可用于循環(huán)語句或者switch語句中,可以使程序終止循環(huán)而執(zhí)行循環(huán)后面的語句,常常與條件語句一起使用。

  • continue 只能用于循環(huán)中,作用為跳過循環(huán)體中剩余語句,而執(zhí)行下一次循環(huán)

for循環(huán)中使用continue案例演示:

public static void main(String[] args) {
    int num = 0;
    for (int i = 1; i <= 100; i++) {
        if (i % 10 == 3) {
            continue;
        }
        num += i;
    }
}
說明:
    當(dāng)if條件滿足時(shí)continue跳過循環(huán)體中剩余的語句
    程序執(zhí)行:
        num = 0
        i = 1 num = 0 + i(1)
        i = 2 num = 1 + i(2)
        i = 3 滿足條件,所以跳出剩余循環(huán)體中的語句。
        以此類推,當(dāng)i 的值為101的時(shí)循環(huán)結(jié)束。

循環(huán)問題:

  • 需要多次重復(fù)執(zhí)行一個(gè)或多個(gè)任務(wù)的問題考慮使用循環(huán)來解決,一般情況for循環(huán)使用最多。

  • 循環(huán)問題定義——當(dāng)循環(huán):

    • 如果業(yè)務(wù)轉(zhuǎn)換為當(dāng)這樣時(shí),優(yōu)先選擇while語句來實(shí)現(xiàn)。
  • 循環(huán)問題定義——直到循環(huán):

    • 如果業(yè)務(wù)轉(zhuǎn)換為直到這樣時(shí),優(yōu)先選擇do-while語句來實(shí)現(xiàn)。
  • 循環(huán)問題定義——固定次數(shù)循環(huán):

    • 如果業(yè)務(wù)中獲取一個(gè)確切的循環(huán)次數(shù),考慮for循環(huán)。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容