欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java流程控制語(yǔ)句最全匯總(下篇)

 更新時(shí)間:2023年01月15日 16:12:38   作者:小熊coder  
這篇文章主要介紹了Java流程控制語(yǔ)句最全匯總(下篇),本文章內(nèi)容詳細(xì),通過(guò)案例可以更好的理解數(shù)組的相關(guān)知識(shí),本模塊分為了三部分,本次為下篇,需要的朋友可以參考下

前文

本章是關(guān)于Java流程控制語(yǔ)句的最全匯總,本篇為匯總下篇。

流程是人們生活中不可或缺的一部分,它表示人們每天都在按照一定的流程做事。

比如出門(mén)搭車(chē)、上班、下班、搭車(chē)回家。這其中的步驟是有順序的。

程序設(shè)計(jì)也需要有流程控制語(yǔ)句來(lái)完成用戶的要求,根據(jù)用戶的輸入決定程序要進(jìn)入什么流程,即“做什么”以及“怎么做”等。

從結(jié)構(gòu)化程序設(shè)計(jì)角度出發(fā),程序有 3 種結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。

若是在程序中沒(méi)有給出特別的執(zhí)行目標(biāo),系統(tǒng)則默認(rèn)自上而下一行一行地執(zhí)行該程序,這類(lèi)程序的結(jié)構(gòu)就稱(chēng)為順序結(jié)構(gòu)。

到目前為止,我們所編寫(xiě)的程序都屬于順序結(jié)構(gòu)。

但是事物的發(fā)展往往不會(huì)遵循早就設(shè)想好的軌跡進(jìn)行,因此,所設(shè)計(jì)的程序還需要能夠具有在不同的條件下處理不同問(wèn)題以及當(dāng)需要進(jìn)行一些相同的重復(fù)操作時(shí),如何能省時(shí)省力地解決問(wèn)題的能力。

在本章中,我們將對(duì) Java 程序中的上述3種流程結(jié)構(gòu)進(jìn)行學(xué)習(xí)。

初學(xué)者應(yīng)該對(duì)本章的每個(gè)小節(jié)進(jìn)行仔細(xì)閱讀、思考,這樣才能達(dá)到事半功倍的效果。

Java foreach語(yǔ)句的用法

foreach 循環(huán)語(yǔ)句是 Java 1.5 的新特征之一,在遍歷數(shù)組、集合方面,foreach 為開(kāi)發(fā)者提供了極大的方便。

foreach 循環(huán)語(yǔ)句是 for 語(yǔ)句的特殊簡(jiǎn)化版本,主要用于執(zhí)行遍歷功能的循環(huán)。

foreach 循環(huán)語(yǔ)句的語(yǔ)法格式如下:

for(類(lèi)型 變量名:集合) {
    語(yǔ)句塊;
}

其中,“類(lèi)型”為集合元素的類(lèi)型,“變量名”表示集合中的每一個(gè)元素,“集合”是被遍歷的集合對(duì)象或數(shù)組。

每執(zhí)行一次循環(huán)語(yǔ)句,循環(huán)變量就讀取集合中的一個(gè)元素,其執(zhí)行流程如圖 1 所示。

img

圖 1 foreach 循環(huán)語(yǔ)句的執(zhí)行流程圖

例 1

假設(shè)有一個(gè)數(shù)組,采用 for 語(yǔ)句遍歷數(shù)組的方式如下:

// 聲明并初始化數(shù)組
int[] numbers = { 43, 32, 53, 54, 75, 7, 10 };
System.out.println("----for----");
// for語(yǔ)句
for (int i = 0; i < numbers.length; i++) {
    System.out.println("Count is:" + numbers[i]);
}

上述第 2 行語(yǔ)句聲明并初始化了 7 個(gè)元素?cái)?shù)組集合,目前大家只需要知道當(dāng)初始化數(shù)組時(shí),要把相同類(lèi)型的元素放到 {…} 中并且用逗號(hào)分隔(,)即可。

關(guān)于數(shù)組集合會(huì)在教程后面詳細(xì)介紹,這里我們只需要大概了解就可以。

numbers.length 是獲得數(shù)組的長(zhǎng)度,length 是數(shù)組的屬性,numbers[i] 是通過(guò)數(shù)組下標(biāo)訪問(wèn)數(shù)組元素。

那么采用 for-each 循環(huán)語(yǔ)句遍歷數(shù)組的方式如下:

// 聲明并初始化int數(shù)組
int[] numbers = { 43, 32, 53, 54, 75, 7, 10 };
System.out.println("----for each----");
// for-each語(yǔ)句
for (int item : numbers) {
    System.out.println("Count is:" + item);
}

從示例中可以發(fā)現(xiàn),item 不是循環(huán)變量,它保存了集合中的元素,for-each 語(yǔ)句將集合中的元素一一取出來(lái),并保存到 item 中,這個(gè)過(guò)程中不需要使用循環(huán)變量,通過(guò)數(shù)組下標(biāo)訪問(wèn)數(shù)組中的元素。

可見(jiàn) for-each 語(yǔ)句在遍歷集合的時(shí)候要簡(jiǎn)單方便得多。

例 2

String[] urls = { "http://c.biancheng.net/java", "http://c.biancheng.net/c", "http://c.biancheng.net/golang/" };
// 使用foreach循環(huán)來(lái)遍歷數(shù)組元素
// 其中book將會(huì)自動(dòng)迭代每個(gè)數(shù)組元素
for (String url : urls) {
    System.out.println(url);
}

從上面程序可以看出,使用 foreach 循環(huán)遍歷數(shù)組元素時(shí)無(wú)須獲得數(shù)組長(zhǎng)度,也無(wú)須根據(jù)索引來(lái)訪問(wèn)數(shù)組元素。

foreach 循環(huán)和普通循環(huán)不同的是,它無(wú)須循環(huán)條件,無(wú)須循環(huán)迭代語(yǔ)句,這些部分都由系統(tǒng)來(lái)完成,foreach 循環(huán)自動(dòng)迭代數(shù)組的每個(gè)元素,當(dāng)每個(gè)元素都被迭代一次后,foreach 循環(huán)自動(dòng)結(jié)束。

當(dāng)使用 foreach 循環(huán)來(lái)迭代輸出數(shù)組元素或集合元素時(shí),通常不要對(duì)循環(huán)變量進(jìn)行賦值,雖然這種賦值在語(yǔ)法上是允許的,但沒(méi)有太大的實(shí)際意義,而且極容易引起錯(cuò)誤。

例如下面程序。

String[] urls = { "http://c.biancheng.net/java", "http://c.biancheng.net/c", "http://c.biancheng.net/golang/" };
// 使用foreach循環(huán)來(lái)遍歷數(shù)組元素,其中 book 將會(huì)自動(dòng)迭代每個(gè)數(shù)組元素
for (String url : urls) {
    url = "https://c.biancheng.net";
    System.out.println(url);
}
System.out.println(urls[0]);

運(yùn)行上邊程序,將看到如下結(jié)果:

https://c.biancheng.net

https://c.biancheng.net

https://c.biancheng.net

https://c.biancheng.net/java

從上面運(yùn)行結(jié)果來(lái)看,由于在 foreach 循環(huán)中對(duì)數(shù)組元素進(jìn)行賦值,結(jié)果導(dǎo)致不能正確遍歷數(shù)組元素,不能正確地取出每個(gè)數(shù)組元素的值。

而且當(dāng)再次訪問(wèn)第一個(gè)數(shù)組元素時(shí),發(fā)現(xiàn)數(shù)組元素的值依然沒(méi)有改變。

不難看出,當(dāng)使用 foreach 來(lái)迭代訪問(wèn)數(shù)組元素時(shí),foreach 中的循環(huán)變量相當(dāng)于一個(gè)臨時(shí)變量,系統(tǒng)會(huì)把數(shù)組元素依次賦給這個(gè)臨時(shí)變量,而這個(gè)臨時(shí)變量并不是數(shù)組元素,它只是保存了數(shù)組元素的值。

因此,如果希望改變數(shù)組元素的值,則不能使用這種 foreach 循環(huán)。

使用 foreach 循環(huán)迭代數(shù)組元素時(shí),并不能改變數(shù)組元素的值,因此不要對(duì) foreach 的循環(huán)變量進(jìn)行賦值。

例 3

在一個(gè)字符串?dāng)?shù)組中存儲(chǔ)了幾種編程語(yǔ)言,現(xiàn)在將這些編程語(yǔ)言遍歷輸出。

foreach 語(yǔ)句的實(shí)現(xiàn)代碼如下:

public static void main(String[] args) {
    String[] languages={"Java","ASP.NET","Python","C#","PHP"};
    System.out.println("現(xiàn)在流行的編程語(yǔ)言有:");
    // 使用 foreach 循環(huán)語(yǔ)句遍歷數(shù)組
    for(String lang:languages) {
        System.out.println(lang);
    }
}

在循環(huán)體執(zhí)行的過(guò)程中,每循環(huán)一次,會(huì)將 languages 數(shù)組中的一個(gè)元素賦值給 lang 變量,直到遍歷 languages 數(shù)組中所有元素,循環(huán)終止。

該程序運(yùn)行后的結(jié)果如下所示。

現(xiàn)在流行的編程語(yǔ)言有:
Java
ASP.NET
Python
C#
PHP

Java return語(yǔ)句

return 關(guān)鍵字并不是專(zhuān)門(mén)用于結(jié)束循環(huán)的,return 語(yǔ)句用于終止函數(shù)的執(zhí)行或退出類(lèi)的方法,并把控制權(quán)返回該方法的調(diào)用者。

如果這個(gè)方法帶有返回類(lèi)型,return 語(yǔ)句就必須返回這個(gè)類(lèi)型的值;如果這個(gè)方法沒(méi)有返回值,可以使用沒(méi)有表達(dá)式的 return 語(yǔ)句。

return 語(yǔ)句的一般語(yǔ)法格式如下:

return 與方法相同類(lèi)型的變量;

如果一個(gè)方法使用了 return 語(yǔ)句并且后面跟有該方法返回類(lèi)型的值,那么調(diào)用此方法后,所得到的結(jié)果為該方法返回的值。

例 1

當(dāng)用戶輸入兩個(gè) double 類(lèi)型的數(shù)值后需要計(jì)算這兩個(gè)數(shù)值之和,而這兩個(gè)操作數(shù)是可以變動(dòng)的,但是求和的功能是不變的,這時(shí)就需要定義一個(gè)方法,只要在需要求和時(shí)調(diào)用該方法即可,該方法將計(jì)算之后的結(jié)果返回。代碼如下:

import java.util.Scanner;
public class Test {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("請(qǐng)輸入操作數(shù)1:");
        double num1 = input.nextDouble(); // 獲取用戶輸入的操作數(shù)1
        System.out.println("請(qǐng)輸入操作數(shù)2:");
        double num2 = input.nextDouble(); // 獲取用戶輸入的操作數(shù)2
        double d = sum(num1, num2);
        System.out.println(num1 + "+" + num2 + "=" + d);
    }
    /**
     * 創(chuàng)建sum() 方法,返回double 類(lèi)型的數(shù)值
     *
     * @param i 操作數(shù)1
     * @param j 操作數(shù)2
     * @return 兩個(gè)操作數(shù)之和
     */
    public static double sum(double i, double j) {
        double sum = i + j;
        return sum;
    }
}

當(dāng)用戶輸入兩個(gè) double 類(lèi)型的數(shù)值后,程序調(diào)用 sum() 方法。

該方法有兩個(gè)參數(shù),分別表示用戶輸入的操作數(shù) 1 和操作數(shù) 2。

在調(diào)用該方法時(shí),只需要將用戶輸入的兩個(gè)數(shù)值傳遞過(guò)去即可,然后程序會(huì)執(zhí)行 sum() 方法,對(duì)這兩個(gè)數(shù)求和,并使用 return 語(yǔ)句將計(jì)算得出的結(jié)果返回。

在 main() 方法中,同樣需要使用 double 類(lèi)型的變量來(lái)接收 sum() 方法返回的值,即變量 d 為計(jì)算后的結(jié)果。

運(yùn)行后的結(jié)果如下所示:

請(qǐng)輸入操作數(shù)1:
500
請(qǐng)輸入操作數(shù)2:
203
500.0+203.0=703.0
請(qǐng)輸入操作數(shù)1:
5.66
請(qǐng)輸入操作數(shù)2:
3.0158
5.66+3.0158=8.6758

Java break語(yǔ)句:跳出循環(huán)

某些時(shí)候需要在某種條件出現(xiàn)時(shí)強(qiáng)行終止循環(huán),而不是等到循環(huán)條件為 false 時(shí)才退出循環(huán)。

此時(shí),可以使用 break 來(lái)完成這個(gè)功能。

break 用于完全結(jié)束一個(gè)循環(huán),跳出循環(huán)體。不管是哪種循環(huán),一旦在循環(huán)體中遇到 break,系統(tǒng)將完全結(jié)束該循環(huán),開(kāi)始執(zhí)行循環(huán)之后的代碼。

在 Java 中,break 語(yǔ)句有 3 種作用,分別是:在 switch 語(yǔ)句中終止一個(gè)語(yǔ)句序列、使用 break 語(yǔ)句直接強(qiáng)行退出循環(huán)和使用 break 語(yǔ)句實(shí)現(xiàn) goto 的功能。

使用 break 語(yǔ)句直接強(qiáng)行退出循環(huán)(break 不帶標(biāo)簽)

可以使用 break 語(yǔ)句強(qiáng)行退出循環(huán),忽略循環(huán)體中的任何其他語(yǔ)句和循環(huán)的條件判斷。

在循環(huán)中遇到 break 語(yǔ)句時(shí),循環(huán)被終止,在循環(huán)后面的語(yǔ)句重新開(kāi)始。

例 1

小明參加了一個(gè) 1000 米的長(zhǎng)跑比賽,在 100 米的跑道上,他循環(huán)地跑著,每跑一圈,剩余路程就會(huì)減少 100 米,要跑的圈數(shù)就是循環(huán)的次數(shù)。

但是,在每跑完一圈時(shí),教練會(huì)問(wèn)他是否要堅(jiān)持下去,如果回答 y,則繼續(xù)跑,否則表示放棄。

使用 break 語(yǔ)句直接強(qiáng)行退出循環(huán)的示例如下:

public static void main(String[] args) {
    Scanner input = new Scanner(System.in); // 定義變量存儲(chǔ)小明的回答
    String answer = ""; // 一圈100米,1000米為10圈,即為循環(huán)的次數(shù)
    for (int i = 0; i < 10; i++) {
        System.out.println("跑的是第" + (i + 1) + "圈");
        System.out.println("還能堅(jiān)持嗎?"); // 獲取小明的回答
        answer = input.next(); // 判斷小明的回答是否為y?如果不是,則放棄,跳出循環(huán)
        if (!answer.equals("y")) {
            System.out.println("放棄");
            break;
        }
        // 循環(huán)之后的代碼
        System.out.println("加油!繼續(xù)!");
    }
}

該程序運(yùn)行后的效果如下所示:

跑的是第1圈
還能堅(jiān)持嗎?
y
加油!繼續(xù)!
跑的是第2圈
還能堅(jiān)持嗎?
y
加油!繼續(xù)!
跑的是第3圈
還能堅(jiān)持嗎?
n
放棄

盡管 for 循環(huán)被設(shè)計(jì)為從 0 執(zhí)行到 10,但是當(dāng)小明的回答不是 y 時(shí),break 語(yǔ)句終止了程序的循環(huán),繼續(xù)執(zhí)行循環(huán)體外的代碼,輸出“加油!繼續(xù)!”。

break 語(yǔ)句能用于任何 Java 循環(huán)中,包括人們有意設(shè)置的無(wú)限循環(huán)。

在一系列嵌套循環(huán)中使用 break 語(yǔ)句時(shí),它將僅僅終止最里面的循環(huán)。例如:

public static void main(String[] args) {
    // 外循環(huán),循環(huán)5次
    for (int i = 0; i < 5; i++) {
        System.out.print("第" + (i + 1) + "次循環(huán):");
        // 內(nèi)循環(huán),設(shè)計(jì)為循環(huán)10次
        for (int j = 0; j < 10; j++) {
            // 判斷j是否等于3,如果是,則終止循環(huán)
            if (j == 3) {
                break;
            }
            System.out.print("內(nèi)循環(huán)的第" + (j + 1) + "次循環(huán)\t");
        }
        System.out.println();
    }
}

該程序運(yùn)行結(jié)果如下所示:

第1次循環(huán):內(nèi)循環(huán)的第1次循環(huán) 內(nèi)循環(huán)的第2次循環(huán) 內(nèi)循環(huán)的第3次循環(huán)
第2次循環(huán):內(nèi)循環(huán)的第1次循環(huán) 內(nèi)循環(huán)的第2次循環(huán) 內(nèi)循環(huán)的第3次循環(huán)
第3次循環(huán):內(nèi)循環(huán)的第1次循環(huán) 內(nèi)循環(huán)的第2次循環(huán) 內(nèi)循環(huán)的第3次循環(huán)
第4次循環(huán):內(nèi)循環(huán)的第1次循環(huán) 內(nèi)循環(huán)的第2次循環(huán) 內(nèi)循環(huán)的第3次循環(huán)
第5次循環(huán):內(nèi)循環(huán)的第1次循環(huán) 內(nèi)循環(huán)的第2次循環(huán) 內(nèi)循環(huán)的第3次循環(huán)

從程序運(yùn)行結(jié)果來(lái)看,在內(nèi)部循環(huán)中的 break 語(yǔ)句僅僅終止了所在的內(nèi)部循環(huán),外部循環(huán)沒(méi)有受到任何的影響。

注意:一個(gè)循環(huán)中可以有一個(gè)以上的 break 語(yǔ)句,但是過(guò)多的 break 語(yǔ)句會(huì)破壞代碼結(jié)構(gòu)。

switch 循環(huán)語(yǔ)句中的 break 僅影響 switch 語(yǔ)句,不會(huì)影響循環(huán)。

例 2

編寫(xiě)一個(gè) Java 程序,允許用戶輸入 6 門(mén)課程成績(jī),如果錄入的成績(jī)?yōu)樨?fù)則跳出循環(huán);如果錄入 6 門(mén)合法成績(jī),則計(jì)算已有成績(jī)之和。

使用 break 語(yǔ)句的實(shí)現(xiàn)代碼如下:

public static void main(String[] args) {
    int score; // 每門(mén)課的成績(jī)
    int sum = 0; // 成績(jī)之和
    boolean con = true; // 記錄錄入的成績(jī)是否合法
    Scanner input = new Scanner(System.in);
    System.out.println("請(qǐng)輸入學(xué)生的姓名:");
    String name = input.next(); // 獲取用戶輸入的姓名
    for (int i = 1; i <= 6; i++) {
        System.out.println("請(qǐng)輸入第" + i + "門(mén)課程的成績(jī):");
        score = input.nextInt();// 獲取用戶輸入的成績(jī)
        if (score < 0) { // 判斷用戶輸入的成績(jī)是否為負(fù)數(shù),如果為負(fù)數(shù),終止循環(huán)
            con = false;
            break;
        }
        sum = sum + score; // 累加求和
    }
    if (con) {
        System.out.println(name + "的總成績(jī)?yōu)椋? + sum);
    } else {
        System.out.println("抱歉,分?jǐn)?shù)錄入錯(cuò)誤,請(qǐng)重新錄入!");
    }
}

運(yùn)行程序,當(dāng)用戶錄入的分?jǐn)?shù)低于 0 時(shí),則輸出“抱歉,分?jǐn)?shù)錄入錯(cuò)誤,請(qǐng)重新錄入!”信息,否則打印學(xué)生的總成績(jī)。輸出結(jié)果如下所示。

請(qǐng)輸入學(xué)生的姓名:
zhangpu
請(qǐng)輸入第1門(mén)課程的成績(jī):
100
請(qǐng)輸入第2門(mén)課程的成績(jī):
75
請(qǐng)輸入第3門(mén)課程的成績(jī):
-8
抱歉,分?jǐn)?shù)錄入錯(cuò)誤,請(qǐng)重新錄入!
請(qǐng)輸入學(xué)生的姓名:
zhangpu
請(qǐng)輸入第1門(mén)課程的成績(jī):
100
請(qǐng)輸入第2門(mén)課程的成績(jī):
68
請(qǐng)輸入第3門(mén)課程的成績(jī):
73
請(qǐng)輸入第4門(mén)課程的成績(jī):
47
請(qǐng)輸入第5門(mén)課程的成績(jī):
99
請(qǐng)輸入第6門(mén)課程的成績(jī):
84
zhangpu的總成績(jī)?yōu)椋?71

在該程序中,當(dāng)錄入第 3 門(mén)課的成績(jī)時(shí),錄入的成績(jī)?yōu)樨?fù)數(shù),判斷條件“score<0”為 true,執(zhí)行“con=false”,用 con 來(lái)標(biāo)記錄入是否有誤。

接著執(zhí)行 break 語(yǔ)句,執(zhí)行完之后程序并沒(méi)有繼續(xù)執(zhí)行條件語(yǔ)句后面的語(yǔ)句,而是直接退出 for 循環(huán)。之后執(zhí)行下面的條件判斷語(yǔ)句,判斷 boolean 變量的 con 是否為 true,如果為 true,則打印總成績(jī);否則打印“抱歉,分?jǐn)?shù)錄入錯(cuò)誤,請(qǐng)重新錄入!”。

使用 break 語(yǔ)句實(shí)現(xiàn) goto 的功能(break 帶標(biāo)簽)

有時(shí)候,在嵌套很深的循環(huán)語(yǔ)句中會(huì)發(fā)生一些不可預(yù)料的事情。

此時(shí)可能更加希望跳到嵌套的所有循環(huán)語(yǔ)句之外。

通過(guò)添加一些額外的條件判斷實(shí)現(xiàn)各層循環(huán)的檢測(cè)很不方便。

幸運(yùn)的是,Java 與 C++ 不同,Java 提供了一種帶標(biāo)簽的 break 語(yǔ)句,用于跳出多重嵌套的循環(huán)語(yǔ)句。

break 語(yǔ)句可以實(shí)現(xiàn) goto 的功能,并且 Java 定義了 break 語(yǔ)句的一種擴(kuò)展形式來(lái)處理退出嵌套很深的循環(huán)這個(gè)問(wèn)題。

通過(guò)使用擴(kuò)展的 break 語(yǔ)句,可以終止執(zhí)行一個(gè)或者幾個(gè)任意代碼塊,這些代碼塊不必是一個(gè)循環(huán)或一個(gè) switch 語(yǔ)句的一部分

。同時(shí)這種擴(kuò)展的 break 語(yǔ)句帶有標(biāo)簽,可以明確指定從何處重新開(kāi)始執(zhí)行。

break 除了具有 goto 退出深層循環(huán)嵌套作用外,還保留了一些程序結(jié)構(gòu)化的特性。

標(biāo)簽 break 語(yǔ)句的通用格式如下:

break label;

label 是標(biāo)識(shí)代碼塊的標(biāo)簽。

當(dāng)執(zhí)行這種形式的 break 語(yǔ)句時(shí),控制權(quán)被傳遞出指定的代碼塊。

被加標(biāo)簽的代碼塊必須包圍 break 語(yǔ)句,但是它不需要直接包圍 break 的塊。

也就是說(shuō),可以使用一個(gè)加標(biāo)簽的 break 語(yǔ)句來(lái)退出一系列的嵌套塊,但是不能使用 break 語(yǔ)句將控制權(quán)傳遞到不包含 break 語(yǔ)句的代碼塊。

用標(biāo)簽(label)可以指定一個(gè)代碼塊,標(biāo)簽可以是任何合法有效的 Java 標(biāo)識(shí)符,后跟一個(gè)冒號(hào)。

加上標(biāo)簽的代碼塊可以作為 break 語(yǔ)句的對(duì)象,使程序在加標(biāo)簽的塊的結(jié)尾繼續(xù)執(zhí)行。

下面是使用帶標(biāo)簽的break 語(yǔ)句的示例。

public class GotoDemo {
    public static void main(String[] args) {
        label: for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 8; j++) {
                System.out.println(j);
                if (j % 2 != 0) {
                    break label;
                }
            }
        }
    }
}

以上程序的執(zhí)行結(jié)果為:

0
1

這里的 label 是標(biāo)簽的名稱(chēng),可以為 Java 語(yǔ)言中任意合法的標(biāo)識(shí)符。

標(biāo)簽語(yǔ)句必須和循環(huán)匹配使用,使用時(shí)書(shū)寫(xiě)在對(duì)應(yīng)的循環(huán)語(yǔ)句的上面,標(biāo)簽語(yǔ)句以冒號(hào)結(jié)束。

如果需要中斷標(biāo)簽語(yǔ)句對(duì)應(yīng)的循環(huán),可以采用 break 后面跟標(biāo)簽名的方式。

如在上面代碼中,當(dāng) j 為 1 時(shí),“j%2!=0”條件表達(dá)式成立,則 label 標(biāo)簽所代表的最外層循環(huán)終止。

注意:通常緊跟 break 之后的標(biāo)簽,必須在 break 所在循環(huán)的外層循環(huán)之前定義才有意義。

在 switch 語(yǔ)句中終止一個(gè)語(yǔ)句序列

在 switch 語(yǔ)句中終止一個(gè)語(yǔ)句序列,就是在每個(gè) case 子句塊的最后添加語(yǔ)句“break;”,這個(gè)功能在《Java switch case》已經(jīng)講過(guò),這里不在講述。

Java continue語(yǔ)句詳解

有時(shí)強(qiáng)迫一個(gè)循環(huán)提早反復(fù)是有用的,也就是,你可能想要繼續(xù)運(yùn)行循環(huán),但是要忽略這次重復(fù)剩余的循環(huán)體的語(yǔ)句,所以 Java 提供了 continue 語(yǔ)句。

continue 語(yǔ)句是 break 語(yǔ)句的補(bǔ)充。

本節(jié)主要講解 continue 語(yǔ)句。

與 break 語(yǔ)句一樣, 它將中斷正常的控制流程。

continue 語(yǔ)句將控制轉(zhuǎn)移到最內(nèi)層循環(huán)的首部。

continue 語(yǔ)句是跳過(guò)循環(huán)體中剩余的語(yǔ)句而強(qiáng)制執(zhí)行下一次循環(huán),其作用為結(jié)束本次循環(huán),即跳過(guò)循環(huán)體中下面尚未執(zhí)行的語(yǔ)句,接著進(jìn)行下一次是否執(zhí)行循環(huán)的判定。

continue 語(yǔ)句類(lèi)似于 break 語(yǔ)句,但它只能出現(xiàn)在循環(huán)體中。

它與 break 語(yǔ)句的區(qū)別在于:continue 并不是中斷循環(huán)語(yǔ)句,而是中止當(dāng)前迭代的循環(huán),進(jìn)入下一次的迭代。

簡(jiǎn)單來(lái)講,continue 是忽略循環(huán)語(yǔ)句的當(dāng)次循環(huán)。

注意:continue 語(yǔ)句只能用在 while 語(yǔ)句、for 語(yǔ)句或者 foreach 語(yǔ)句的循環(huán)體之中,在這之外的任何地方使用它都會(huì)引起語(yǔ)法錯(cuò)誤。

在循環(huán)體中使用 continue 語(yǔ)句有兩種方式可以帶有標(biāo)簽,也可以不帶標(biāo)簽。語(yǔ)法格式如下:

continue //不帶標(biāo)簽

continue label //帶標(biāo)簽,label是標(biāo)簽名

下面看一個(gè)示例,代碼如下:

int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
for (int i = 0; i < numbers.length; i++) {
    if (i == 3) {
        continue;
    }
    System.out.println("Count is: " + i);
}

在上述程序代碼中,當(dāng)條件 i==3 的時(shí)候執(zhí)行 continue 語(yǔ)句,continue 語(yǔ)句會(huì)終止本次循環(huán),循環(huán)體中 continue 之后的語(yǔ)句將不再執(zhí)行,接著進(jìn)行下次循環(huán),所以輸出結(jié)果中沒(méi)有 3。程序運(yùn)行結(jié)果如下:

Count is: 0
Count is: 1
Count is: 2
Count is: 4
Count is: 5
Count is: 6
Count is: 7
Count is: 8
Count is: 9

帶標(biāo)簽的 continue 語(yǔ)句示例代碼如下:

public static void main(String[] args) {
    label1: for (int x = 0; x < 5; x++) {
        for (int y = 5; y > 0; y--) {
            if (y == x) {
                continue label1;
            }
            System.out.println(x+","+y);
        }
    }
    System.out.println("Game Over!");
}

默認(rèn)情況下,continue 只會(huì)跳出最近的內(nèi)循環(huán)(代碼第 3 行的 for 循環(huán)),如果要跳出代碼第 2 行的外循環(huán),可以為外循環(huán)添加一個(gè)標(biāo)簽 label1,然后在第 5 行的 continue 語(yǔ)句后面指定這個(gè)標(biāo)簽 label1,這樣當(dāng)條件滿足執(zhí)行 continue 語(yǔ)句時(shí),程序就會(huì)跳轉(zhuǎn)出外循環(huán)。

程序運(yùn)行結(jié)果如下:

0,5
0,4
0,3
0,2
0,1
1,5
1,4
1,3
1,2
2,5
2,4
2,3
3,5
3,4
4,5
Game Over!

由于跳過(guò)了 x == y,因此下面的內(nèi)容沒(méi)有輸出。

1,1
2,2
3,3
4,4

Java選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的總結(jié)

任何編程語(yǔ)言中最常見(jiàn)的程序結(jié)構(gòu)就是順序結(jié)構(gòu)。

順序結(jié)構(gòu)就是程序從上到下逐行的執(zhí)行,中間沒(méi)有任何判斷和跳轉(zhuǎn)。

如果 main 方法的多行代碼之間沒(méi)有任何流程控制,則程序總是從上向下依次執(zhí)行,排在前面的代碼先執(zhí)行,排在后面的代碼后執(zhí)行

。這意味著:如果沒(méi)有流程控制,Java 方法里的語(yǔ)句是一個(gè)順序執(zhí)行流,從上向下依次執(zhí)行每條語(yǔ)句。

不論哪一種編程語(yǔ)言,都會(huì)提供兩種基本的流程控制結(jié)構(gòu):分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。

分支結(jié)構(gòu)用于實(shí)現(xiàn)根據(jù)條件來(lái)選擇性地執(zhí)行某段代碼,循環(huán)結(jié)構(gòu)則用于實(shí)現(xiàn)根據(jù)循環(huán)條件重復(fù)執(zhí)行某段代碼。

Java 同樣提供了這兩種流程控制結(jié)構(gòu)的語(yǔ)法,Java 提供了 if 和 switch 兩種分支語(yǔ)句,并提供了 while、do while 和 for 三種循環(huán)語(yǔ)句。

一般寫(xiě)循環(huán)語(yǔ)句時(shí),分以下三步走:

  1. 定義初始值
  2. 設(shè)置判斷條件
  3. 初始值變化

除此之外,JDK5 還提供了一種新的循環(huán):foreach 循環(huán),能以更簡(jiǎn)單的方式來(lái)遍歷集合、數(shù)組的元素。

Java 還提供了 break、continue 和 return 來(lái)控制程序的循環(huán)結(jié)構(gòu),作用如下:

  • break:表示跳出當(dāng)前層循環(huán)
  • continue:表示跳出本次循環(huán),進(jìn)入下一次循環(huán)
  • return:跳出當(dāng)前方法的循環(huán)

當(dāng)在實(shí)現(xiàn)某個(gè)功能語(yǔ)句時(shí),如果需要通過(guò)某一個(gè)條件去判斷,則用選擇結(jié)構(gòu)。

當(dāng)實(shí)現(xiàn)某個(gè)功能需要通過(guò)循環(huán)去實(shí)現(xiàn),則用循環(huán)結(jié)構(gòu)。

當(dāng)然循環(huán)和選擇是可以相互嵌套的。

到此這篇關(guān)于Java流程控制語(yǔ)句最全匯總(下篇)的文章就介紹到這了,其他兩個(gè)部分的內(nèi)容(上、中篇)請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java多線程中的原子類(lèi)屬性說(shuō)明

    Java多線程中的原子類(lèi)屬性說(shuō)明

    這篇文章主要介紹了Java多線程中的原子類(lèi)屬性說(shuō)明,對(duì)多線程訪問(wèn)同一個(gè)變量,我們需要加鎖,而鎖是比較消耗性能的,JDk1.5之后,新增的原子操作類(lèi)提供了一種用法簡(jiǎn)單、性能高效、線程安全地更新一個(gè)變量的方式,需要的朋友可以參考下
    2023-10-10
  • java8新特性 獲取list某一列的操作

    java8新特性 獲取list某一列的操作

    這篇文章主要介紹了java8新特性 獲取list某一列的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • Java使用Swing實(shí)現(xiàn)一個(gè)模擬電腦計(jì)算器

    Java使用Swing實(shí)現(xiàn)一個(gè)模擬電腦計(jì)算器

    Java Swing 是一個(gè)用于創(chuàng)建 Java GUI(圖形用戶界面)的框架,它提供了一系列的 GUI 組件和工具,可以用于創(chuàng)建桌面應(yīng)用程序,包括按鈕、文本框、標(biāo)簽、表格等等,本文給大家介紹了Java使用Swing實(shí)現(xiàn)一個(gè)模擬計(jì)算器,感興趣的同學(xué)可以自己動(dòng)手嘗試一下
    2024-05-05
  • Java中為什么要實(shí)現(xiàn)Serializable序列化

    Java中為什么要實(shí)現(xiàn)Serializable序列化

    在Java編程中,Serializable序列化是一個(gè)常見(jiàn)的概念,它允許對(duì)象在網(wǎng)絡(luò)上傳輸或持久化到磁盤(pán)上,本文將深入探討為什么在Java中要實(shí)現(xiàn)Serializable序列化,并通過(guò)示例代碼來(lái)解釋其重要性
    2023-10-10
  • JAVA之讀取properties時(shí)路徑的注意問(wèn)題

    JAVA之讀取properties時(shí)路徑的注意問(wèn)題

    這篇文章主要介紹了JAVA之讀取properties時(shí)路徑的注意問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Java實(shí)現(xiàn)多個(gè)單張tif文件合并成一個(gè)多頁(yè)tif文件

    Java實(shí)現(xiàn)多個(gè)單張tif文件合并成一個(gè)多頁(yè)tif文件

    業(yè)務(wù)部門(mén)需要將多個(gè)單張的tiff文件,合并成一個(gè)多頁(yè)的tiff文件,本文就來(lái)介紹一下如何實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • SpringBoot項(xiàng)目不占用端口啟動(dòng)的方法

    SpringBoot項(xiàng)目不占用端口啟動(dòng)的方法

    這篇文章主要介紹了SpringBoot項(xiàng)目不占用端口啟動(dòng)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • JAVA中三種常用的循環(huán)語(yǔ)句詳解

    JAVA中三種常用的循環(huán)語(yǔ)句詳解

    這篇文章主要介紹了JAVA中三種常用的循環(huán)語(yǔ)句詳解,包括格式和執(zhí)行流程,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • 關(guān)于BindingResult的使用總結(jié)及注意事項(xiàng)

    關(guān)于BindingResult的使用總結(jié)及注意事項(xiàng)

    這篇文章主要介紹了關(guān)于BindingResult的使用總結(jié)及注意事項(xiàng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java多線程中wait、notify、notifyAll使用詳解

    Java多線程中wait、notify、notifyAll使用詳解

    這篇文章主要介紹了Java多線程中wait、notify、notifyAll使用詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-05-05

最新評(píng)論