版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Java程序設(shè)計(jì)專業(yè)核心課程
精品課程1教學(xué)計(jì)劃ORJECT理解Java語(yǔ)言中復(fù)合語(yǔ)句的使用方法。掌握if條件語(yǔ)句的使用方法。了解if語(yǔ)句與switch語(yǔ)句的區(qū)別。掌握while循環(huán)語(yǔ)句的使用方法。掌握do…while循環(huán)語(yǔ)句的使用方法。。掌握f(shuō)or語(yǔ)句的使用方法。1精品課程24.1復(fù)合語(yǔ)句與C語(yǔ)言或其他語(yǔ)言相同,Java語(yǔ)言的復(fù)合語(yǔ)句是以整個(gè)塊區(qū)為單位的語(yǔ)句,所以又稱為塊語(yǔ)句。復(fù)合語(yǔ)句由開括號(hào)“{”開始,閉括號(hào)“}”結(jié)束。在前面的學(xué)習(xí)中已經(jīng)接觸到了這種復(fù)合語(yǔ)句。例如,在定義一個(gè)類或方法時(shí),類體就是以“{}”作為標(biāo)記,方法體同樣也是以“{}”作為標(biāo)記。對(duì)于復(fù)合語(yǔ)句中的每個(gè)語(yǔ)句都是從上到下地被執(zhí)行。復(fù)合語(yǔ)句以整個(gè)塊為單位,可以用在任何一個(gè)單獨(dú)語(yǔ)句可以用到的地方,并且在復(fù)合語(yǔ)句中還可以嵌套復(fù)合語(yǔ)句?!纠?.1】在項(xiàng)目中創(chuàng)建Compound類,在主方法中定義復(fù)合語(yǔ)句塊,其中包含另一復(fù)合語(yǔ)句塊。publicclassCompound{publicstaticvoidmain(Stringargs[]){{inty=40;System.out.println("輸出y的值:"+y);3精品課程intz=245;booleann;{b=y>z;System.out.println("y>z成立嗎:"+b);}}Stringword="hellojava";System.out.println("輸出字符串:"+word);}}其運(yùn)行結(jié)果如下:輸出y的值:40y>z成立嗎:false輸出字符串:hellojava
在使用復(fù)合語(yǔ)句時(shí)要注意,復(fù)合語(yǔ)句為局部變量創(chuàng)建了一個(gè)作用域,該作用域?yàn)槌绦虻囊徊糠?,在該作用域中某個(gè)變量被創(chuàng)建并能夠使用。如果在某個(gè)變量的作用域外使用該變量,則會(huì)發(fā)生錯(cuò)誤,例如,在本實(shí)例中,如果在復(fù)合語(yǔ)句外使用變量z、y、b將會(huì)出現(xiàn)錯(cuò)誤,而變量x可在整個(gè)方法體中使用。4.2條件語(yǔ)句條件語(yǔ)句可根據(jù)不同的條件執(zhí)行不同的語(yǔ)句。條件語(yǔ)句包括if條件語(yǔ)句與switch多分支語(yǔ)句。本節(jié)將向讀者介紹條件語(yǔ)句的用法。4.2.1?if條件語(yǔ)句if條件語(yǔ)句是一個(gè)重要的編程語(yǔ)句,它用于告訴程序在某個(gè)條件成立的情況下執(zhí)行某段程序,而在另一種情況下執(zhí)行另外的語(yǔ)句。使用if條件語(yǔ)句,可選擇是否要執(zhí)行緊跟在條件之后的那個(gè)語(yǔ)句。關(guān)鍵字if之后是作為條件的“布爾表達(dá)式”,如果該表達(dá)式返回的結(jié)果為true,則執(zhí)行其后的語(yǔ)句;若為false,則不執(zhí)行if條件之后的語(yǔ)句。if條件語(yǔ)句可分為簡(jiǎn)單的if條件語(yǔ)句、if…else語(yǔ)句和if…elseif多分支語(yǔ)句。1.簡(jiǎn)單的if條件語(yǔ)句其語(yǔ)法格式如下:if(布爾表達(dá)式){語(yǔ)句序列}(1)布爾表達(dá)式:必要參數(shù),表示最后返回的結(jié)果必須是一個(gè)布爾值,也可以是一個(gè)單純的布爾變量或常量,或者是使用關(guān)系或布爾運(yùn)算符的表達(dá)式。(2)語(yǔ)句序列:可選參數(shù)。可以是一條或多條語(yǔ)句,當(dāng)表達(dá)式的值為true時(shí)執(zhí)行這些語(yǔ)句。如語(yǔ)句序列中僅有一條語(yǔ)句,則可以省略條件語(yǔ)句中的大括號(hào)。4精品課程5精品課程【例4.2】語(yǔ)句序列中只有一條語(yǔ)句。inta=100;if(a==100)System.out.print("a的值是100");雖然if和else語(yǔ)句后面的復(fù)合語(yǔ)句塊只有一條語(yǔ)句,省略“{}”并無(wú)語(yǔ)法錯(cuò)誤,但為了增強(qiáng)程序的可讀性最好不要省略?!纠?.3】省略了if條件表達(dá)式中的語(yǔ)句序列。booleanb=false;if(b);booleanb=false;圖4-1if條件語(yǔ)句的執(zhí)行過(guò)程條件條件if(b){}
【例4.4】在項(xiàng)目中創(chuàng)建Getif類,在主方法中定義整型變量。使用條件語(yǔ)句判斷兩個(gè)變量的大小來(lái)決定輸出結(jié)果。6精品課程publicclassGetif{//創(chuàng)建類publicstaticvoidmain(Stringargs[]){//主方法intx=45;//聲明int型變量x,并賦給初值inty=12;//聲明int型變量y,并賦給初值if(x>y){//判斷x是否大于ySystem.out.println("變量x大于變量y");//如果條件成立,輸出的信息}if(s<y){//判斷x是否小于ySystem.out.println("變量x小于變量y");//如果條件成立,輸出的信息}}}其運(yùn)行結(jié)果如下:變量x大于變量y2.if…else語(yǔ)句if…else語(yǔ)句是條件語(yǔ)句中最常用的一種形式,它會(huì)針對(duì)某種條件有選擇地做出處理。通常表現(xiàn)為“如果滿足某種條件,就進(jìn)行某種處理,否則就進(jìn)行另一種處理”。其語(yǔ)法格式如下:if(表達(dá)式){若干條語(yǔ)句}else{若干條語(yǔ)句}if后面()內(nèi)的表達(dá)式的值必須是boolean型的。如果表達(dá)式的值為true,則執(zhí)行緊跟if語(yǔ)句的復(fù)合語(yǔ)句;如果表達(dá)式的值為false,則執(zhí)行else后面的復(fù)合語(yǔ)句。if…else語(yǔ)句的執(zhí)行過(guò)程如圖4-2所示。同簡(jiǎn)單的if條件語(yǔ)句一樣,如果if…else語(yǔ)句的語(yǔ)句序列中只有一條語(yǔ)句(不包括注釋),則可以省略該語(yǔ)句序列外面的大括號(hào)。有時(shí)為了編程的需要,else或if后面的大括號(hào)里可以沒有語(yǔ)句。圖4-2if…else語(yǔ)句的執(zhí)行過(guò)程【例4.5】在項(xiàng)目中創(chuàng)建Getifelse類,在主方法中定義變量,并通過(guò)使用if…else語(yǔ)句判斷變量的值來(lái)決定輸出結(jié)果。7精品課程8精品課程publicclassGetifelse{publicstaticvoidmain(Stringargs[]){//主方法intmath=95;//聲明int型局部變量并賦初值95intenglish=56;//聲明int型局部變量并賦初值56if(math>60){//使用if語(yǔ)句判斷math是否大于60System.out.println("數(shù)學(xué)及格了");//條件成立時(shí)輸出的信息}else{System.out.println("數(shù)學(xué)沒有及格");//條件不成立時(shí)輸出的信息}if(English>60){//判斷英語(yǔ)成績(jī)是否大于60System.out.println("英語(yǔ)及格了");//條件成立時(shí)輸出的信息}else{System.out.println("英語(yǔ)沒有及格");//條件不成立時(shí)輸出的信息}}}其運(yùn)行結(jié)果如下:數(shù)學(xué)及格了英語(yǔ)沒有及格3.if…elseif多分支語(yǔ)句if…elseif多分支語(yǔ)句用于針對(duì)某一事件的多種情況進(jìn)行處理。通常表現(xiàn)為“如果滿足某種條件,就進(jìn)行某種處理,否則,如果滿足另一種條件則執(zhí)行另一種處理”。其語(yǔ)法格式如下:if(條件表達(dá)式1){語(yǔ)句塊1}elseif(條件表達(dá)式2){語(yǔ)句塊2}…elseif(條件表達(dá)式n){語(yǔ)句塊n}(1)條件表達(dá)式1~條件表達(dá)式n:必要參數(shù)??梢杂啥鄠€(gè)表達(dá)式組成,但最后返回的結(jié)果必須為boolean類型。(2)語(yǔ)句塊:可以是一條或多條語(yǔ)句。當(dāng)條件表達(dá)式1的值為true時(shí),執(zhí)行語(yǔ)句塊1;當(dāng)條件表達(dá)式2的值為true時(shí),執(zhí)行語(yǔ)句塊2,依此類推。當(dāng)省略任意一組語(yǔ)句序列時(shí),可以保留其外面的大括號(hào),也可以將大括號(hào)替換為“;”。if…elseif多分支語(yǔ)句的執(zhí)行過(guò)程如圖4-3所示。開始筆記是否條件1是否語(yǔ)句塊1條件2是否語(yǔ)句塊2……是否……條件n語(yǔ)句塊n語(yǔ)句塊n+2結(jié)束9精品課程10精品課程【例4.6】在項(xiàng)目中創(chuàng)建GetTerm類,在主方法中定義變量x,使用if…elseif多分支語(yǔ)句,通過(guò)判斷x的值決定輸出結(jié)果。publicclassGetTerm{//創(chuàng)建主類publicstaticvoidmain(Stringargs[]){//主方法intx=20;//聲明int型局部變量if(x>30){//判斷變量x是否大于30System.out.println("a的值大于30");//條件成立的輸出信息}elseif(x>10){//判斷變量x是否大于10System.out.println("a的值大于10但小于30");//條件成立的輸出信息}elseif(x>0){//判斷變量x是否大于0System.out.println("a的值大于0但小于10");//條件成立的輸出信息}elseif{//當(dāng)以上條件都不成立時(shí),執(zhí)行的語(yǔ)句塊System.out.println("a的值小于0");//輸出信息}}}其運(yùn)行結(jié)果如下:a的值大于10但小于3011精品課程在本實(shí)例中,由于變量x為20,條件x>30為假,程序向下執(zhí)行判斷下面的條件;條件x>10為真,所以執(zhí)行條件x>10后面的程序塊中語(yǔ)句。輸出“a的值大于10但小于30”,然后退出if語(yǔ)句。if語(yǔ)句只執(zhí)行條件為真的命令語(yǔ)句,其他語(yǔ)句都不會(huì)執(zhí)行。4.2.2?switch多分支語(yǔ)句在編程中,一個(gè)常見的問(wèn)題就是檢測(cè)一個(gè)變量是否符合某個(gè)條件,如果不匹配,再用另一個(gè)值來(lái)檢測(cè)它,依此類推。當(dāng)然,這種問(wèn)題使用if條件語(yǔ)句也可以完成。【例4.7】使用if語(yǔ)句檢測(cè)變量是否符合某個(gè)條件。if(grade=="A"){System.out.println("真棒");}if(grade=="b"){System.out.println("做得真不錯(cuò)");}這個(gè)程序顯得比較笨重,程序員需要測(cè)試不同的值來(lái)給出輸出語(yǔ)句。在Java語(yǔ)言中,可以用switch語(yǔ)句將動(dòng)作組織起來(lái),就能以一個(gè)較為簡(jiǎn)單明了的方式來(lái)實(shí)現(xiàn)“多選一”的選擇。其語(yǔ)法格式如下:swirch(表達(dá)式){case常量值1;語(yǔ)句塊1;[break;]…case常量值n語(yǔ)句塊n;[break;]default:語(yǔ)句塊n+1;[break;]}switch語(yǔ)句中表達(dá)式的值必須是整型或字符型,常量值1~常量值n必須也是整型或字符型。switch語(yǔ)句首先計(jì)算表達(dá)式的值,如果表達(dá)式的值和某個(gè)case后面的變量值相同,則執(zhí)行該case語(yǔ)句后的若干條語(yǔ)句,直到遇到break語(yǔ)句。此時(shí)如果該case語(yǔ)句中沒有break語(yǔ)句,將繼續(xù)執(zhí)行后面case語(yǔ)句中的若干條語(yǔ)句,直到遇到break語(yǔ)句。若沒有一個(gè)常量的值與表達(dá)式的值相同,則執(zhí)行default后面的語(yǔ)句。default語(yǔ)句為可選的,如果不存在,而且switch語(yǔ)句中表達(dá)式的值不與任何case的常量值相同,switch則不做任何處理。12精品課程命令說(shuō)明快捷鍵重命名重命名所選擇的
Java
元素Alt+Shift+R移動(dòng)移動(dòng)所選擇的
Java
元素Alt+Shift+V抽取方法創(chuàng)建一個(gè)包含當(dāng)前所選語(yǔ)句或表達(dá)式的新方法,并相關(guān)的引用Alt+Shift+M抽取局部變量創(chuàng)建為當(dāng)前所選表達(dá)式指定的新變量,并將選擇替換為對(duì)新變量的引用Alt+Shift+L命令說(shuō)明快捷鍵重命名重命名所選擇的
Java
元素Alt+Shift+R移動(dòng)移動(dòng)所選擇的
Java
元素Alt+Shift+V抽取方法創(chuàng)建一個(gè)包含當(dāng)前所選語(yǔ)句或表達(dá)式的新方法,并相關(guān)的引用Alt+Shift+M抽取局部變量創(chuàng)建為當(dāng)前所選表達(dá)式指定的新變量,并將選擇替換為對(duì)新變量的引用Alt+Shift+L命令說(shuō)明快捷鍵重命名重命名所選擇的
Java
元素Alt+Shift+R移動(dòng)移動(dòng)所選擇的
Java
元素Alt+Shift+V抽取方法創(chuàng)建一個(gè)包含當(dāng)前所選語(yǔ)句或表達(dá)式的新方法,并相關(guān)的引用Alt+Shift+M抽取局部變量創(chuàng)建為當(dāng)前所選表達(dá)式指定的新變量,并將選擇替換為對(duì)新變量的引用Alt+Shift+L命令說(shuō)明快捷鍵重命名重命名所選擇的
Java
元素Alt+Shift+R移動(dòng)移動(dòng)所選擇的
Java
元素Alt+Shift+V抽取方法創(chuàng)建一個(gè)包含當(dāng)前所選語(yǔ)句或表達(dá)式的新方法,并相關(guān)的引用Alt+Shift+M抽取局部變量創(chuàng)建為當(dāng)前所選表達(dá)式指定的新變量,并將選擇替換為對(duì)新變量的引用Alt+Shift+L
14精品課程switch語(yǔ)句的執(zhí)行過(guò)程如圖4-4所示。圖4-4switch語(yǔ)句的執(zhí)行過(guò)程【例4.8】在項(xiàng)目中創(chuàng)建GetSwitch類,在主方法中應(yīng)用switch語(yǔ)句將周一至周三的英語(yǔ)單詞打印出來(lái)。publicclassGetSwitch{//創(chuàng)建類publicstaticvoidmain(Stringargs[]){//主方法System.out.println("今天是星期幾:");intweek=2;//定義int型變量weekswitch(week){//指定switch語(yǔ)句的表達(dá)式為變量weekcase1://定義case語(yǔ)句中的常量為1System.out.println("Monday");//輸出信息break;case2://定義case語(yǔ)句中的常量為2System.out.println("Tuesday");break;case3://定義case語(yǔ)句中的常量為3System.out.println("Wednesday");break;default://default語(yǔ)句System.out.println("Sorry,Idon’tknow");}}}其運(yùn)行結(jié)果如下:今天是星期幾:Tuesday需要注意的是,在switch語(yǔ)句中,case語(yǔ)句后常量表達(dá)式的值可以為整數(shù),但絕不可以是實(shí)數(shù)。例如,下面的代碼就是不合法的。case1.1;常量表達(dá)式的值可以是字符,但一定不可以是字符串。例如,下面的代碼也是非法的。case"OK";4.2.3?范例1:驗(yàn)證登錄信息的合法性大多數(shù)系統(tǒng)登錄模塊都會(huì)接收用戶通過(guò)鍵盤輸入的登錄信息,這些登錄信息將會(huì)被登錄模塊驗(yàn)證,如果使用的是指定的用戶名和密碼,則允許用戶登錄,否則將用戶拒之門外。本范例通過(guò)if…else語(yǔ)句進(jìn)行多條件判斷來(lái)實(shí)現(xiàn)登錄信息的驗(yàn)證,運(yùn)行結(jié)果如下:請(qǐng)輸入登錄用戶名:mr請(qǐng)輸入登錄密碼:mrsoft恭喜您,登錄信息通過(guò)驗(yàn)證。在項(xiàng)目中創(chuàng)建CheckLogin類,在該類的主方法中接收用戶輸入的登錄用戶名與登錄密碼,然后通過(guò)if條件語(yǔ)句分別判斷用戶名與密碼是否合并,并輸出登錄驗(yàn)證結(jié)果。示例代碼如下:importjava.util.Scanner;publicclassCheckLogin{publicstaticvoidmain(String[]args){Scannerscan=newScanner(System.in);//創(chuàng)建掃描器System.out.println("請(qǐng)輸入登錄用戶名:");Stringusername=scan.nextLine();//接收用戶輸入的登錄名System.out.println("請(qǐng)輸入登錄密碼:");Stringpassword=scanf.nextLine();//接收用戶輸入的登錄密碼if(!username.equals("mr")){//判斷用戶名的合法性System.out.println("用戶名非法。");}elseif(!password.equals("mrsoft")){//判斷密碼合法性System.out.println("登錄密碼錯(cuò)誤。");}else{//通過(guò)兩個(gè)條件判斷則默認(rèn)通過(guò)登錄驗(yàn)證System.out.println("恭喜您,登錄信息通過(guò)驗(yàn)證。");}}}4.2.4?范例2:為新員工分配部門本范例的關(guān)鍵技術(shù)在于swirch多分支語(yǔ)句的使用,該語(yǔ)句只支持對(duì)常量的判斷,而常量又只能是Java的基本數(shù)據(jù)類型,采用字符串的哈希碼進(jìn)行判斷。也就是把String類的hashCode()方法返回值作為switch語(yǔ)法的表達(dá)式,case關(guān)鍵字之后跟隨的是各種字符串常量的哈希碼整數(shù)值。其運(yùn)行結(jié)果如下:請(qǐng)輸入新員工的姓名:李小龍請(qǐng)輸入新員工應(yīng)聘的編程語(yǔ)言:Java員工李小龍被分配到Java程序開發(fā)部門。在項(xiàng)目中創(chuàng)建Example類,在該類的主方法中創(chuàng)建標(biāo)準(zhǔn)輸入流的掃描器,通過(guò)掃描器獲取人事部門輸入的員工姓名及其應(yīng)聘的編程語(yǔ)言,然后根據(jù)每個(gè)語(yǔ)言對(duì)應(yīng)的哈希碼來(lái)判斷員工分配部門。示例代碼如下:importjava.util.Scanner;publicclassExample{publicstaticvoidmain(String[]args){Scannerscan=newScanner(System.in);System.out.println("請(qǐng)輸入新員工的姓名:");Stringname=scan.nextLine();//接收員工名稱System.out.println("請(qǐng)輸入新員工應(yīng)聘的編程語(yǔ)言:");Stringlanguage=scan.nextLine();//接收員工應(yīng)聘的編程語(yǔ)言switch(language.hashCode()){//根據(jù)編程語(yǔ)言確定員工分配的部門case3254818://Java的哈希碼case2301506://Java的哈希碼case2269730://Java的哈希碼System.out.println("員工"+name+"被分配到Java程序開發(fā)部門。");break;case3104://c#的哈希碼case2112://C#的哈希碼System.out.println("員工"+name+"被分配到C#項(xiàng)目維護(hù)組。");break;case-709190099://A的哈希碼case955463181://A的哈希碼case9745901://A的哈希碼System.out.println("員工"+name+"被分配到A程序測(cè)試部門。");break;default:System.out.println("本公司不需要"+language+"語(yǔ)言的程序開發(fā)人員。");}}}switch語(yǔ)句中,每個(gè)case代碼塊可以作為一個(gè)條件分支,但是對(duì)于多個(gè)條件采取相同的業(yè)務(wù)處理的情況,可以將多個(gè)case分支關(guān)聯(lián)在一起,省略它們之間的break語(yǔ)句,而在最后一個(gè)相同的case分支中實(shí)現(xiàn)業(yè)務(wù)處理并執(zhí)行break語(yǔ)句。4.3循環(huán)語(yǔ)句循環(huán)語(yǔ)句就是在滿足一定條件的情況下反復(fù)執(zhí)行某一個(gè)操作。在Java中提供了3種常用的循環(huán)語(yǔ)句,分別是while循環(huán)語(yǔ)句、do…while循環(huán)語(yǔ)句和for循環(huán)語(yǔ)句。下面分別對(duì)這3種循環(huán)語(yǔ)句進(jìn)行介紹。4.3.1?while循環(huán)語(yǔ)句while循環(huán)語(yǔ)句又稱為條件判斷語(yǔ)句,它的循環(huán)方式為利用一個(gè)條件來(lái)控制是否要繼續(xù)反復(fù)執(zhí)行這條語(yǔ)句。其語(yǔ)法格式如下:while(條件表達(dá)式){執(zhí)行語(yǔ)句}當(dāng)條件表達(dá)式的返回值為真(true)時(shí),則執(zhí)行“{}”中的語(yǔ)句,當(dāng)執(zhí)行完“{}”中的語(yǔ)句后,重新判斷條件表達(dá)式的返回值,直到表達(dá)式返回的結(jié)果為假(false)時(shí),退出循環(huán)?!纠?.9】在項(xiàng)目中創(chuàng)建GetSum類,在主方法中通過(guò)while循環(huán)將整數(shù)1~10相加。publicclassGetSum{//創(chuàng)建類publicstaticvoidmain(Stringargs[]){//主方法intx=1;//定義int型變量x,并賦初值intsum=0;//定義變量用于保存相加后的結(jié)果while(x<=10){sum=sum+x;//while循環(huán)語(yǔ)句,當(dāng)變量滿足條件表達(dá)式時(shí)執(zhí)行循環(huán)體語(yǔ)句x++;}System.out.println("1到10的和是:sum="+sum);//將變量sum輸出}}其運(yùn)行結(jié)果如下:1到10的和是:sum=55需要注意的是,初學(xué)者經(jīng)常犯的一個(gè)錯(cuò)誤就是在while表達(dá)式的括號(hào)后加“;”例如:while(x==5);System.out.println("x的值為5");這時(shí)程序會(huì)認(rèn)為要執(zhí)行一條空語(yǔ)句,而進(jìn)入無(wú)限循環(huán),Java編譯器又不會(huì)報(bào)錯(cuò),可能會(huì)浪費(fèi)很多時(shí)間去調(diào)試,讀者應(yīng)注意該問(wèn)題。4.3.2?do…while循環(huán)語(yǔ)句do…while循環(huán)語(yǔ)句與while循環(huán)語(yǔ)句類似,它們之間的區(qū)別是while循環(huán)語(yǔ)句為先判斷條件是否成立再執(zhí)行循環(huán)體,而do…while循環(huán)語(yǔ)句則先執(zhí)行一次循環(huán)后,再判斷條件是否成立,也就是說(shuō)do…while循環(huán)語(yǔ)句中大括號(hào)的程序段至少要被執(zhí)行一次。其語(yǔ)法格式如下:do{執(zhí)行語(yǔ)句}while(條件表達(dá)式);while語(yǔ)句的一個(gè)明顯區(qū)別就是do…while循環(huán)語(yǔ)句在結(jié)尾處多加了一個(gè)分號(hào)(;)?!纠?.10】在項(xiàng)目中創(chuàng)建Cycle類,在主方法中編寫代碼,通過(guò)本實(shí)例可看出while循環(huán)語(yǔ)句與do…while循環(huán)語(yǔ)句的區(qū)別。publicclassCycle{publicstaticvoidmain(Stringargs[]){inta=100;//聲明int型變量a并賦初值100while(a>60)//指定進(jìn)入循環(huán)體條件{a--;if(a==60){System.out.println("ok!a==60");//while語(yǔ)句循環(huán)體}}intb=100;//聲明int型變量b并賦初值100do{System.out.println("ok!b==100");//do…while語(yǔ)句循環(huán)b--;}while(b==60);//指定循環(huán)結(jié)束條件}}其運(yùn)行結(jié)果如下:ok!a==60ok!b==1004.3.3?for循環(huán)語(yǔ)句for循環(huán)語(yǔ)句是Java程序設(shè)計(jì)中比較有用的循環(huán)語(yǔ)句之一。一個(gè)for循環(huán)可以用來(lái)重復(fù)執(zhí)行某條語(yǔ)句,直到某個(gè)條件得到滿足。在Java5之后新增了foreach語(yǔ)法,本小節(jié)將對(duì)這兩種for循環(huán)形式進(jìn)行詳細(xì)的介紹。1.for語(yǔ)句其語(yǔ)法格式如下:for(表達(dá)式1;表達(dá)式2;表達(dá)式3){語(yǔ)句序列}(1)表達(dá)式1:初始化表達(dá)式,負(fù)責(zé)完成變量的初始化。(2)表達(dá)式2:循環(huán)條件表達(dá)式,值為boolean型的表達(dá)式,指定循環(huán)條件。(3)表達(dá)式3:循環(huán)后操作表達(dá)式,負(fù)責(zé)修整變量,改變循環(huán)條件。在執(zhí)行for循環(huán)時(shí),首先執(zhí)行表達(dá)式1,完成某一變量的初始化工作;下一步判斷表達(dá)式2的值,若表達(dá)式2的值為true,則進(jìn)入循環(huán)體;在執(zhí)行完循環(huán)體后緊接著計(jì)算表達(dá)式3,這部分通常是增加或減少循環(huán)控制變量的一個(gè)表達(dá)式。這樣一輪循環(huán)就結(jié)束了。第二輪循環(huán)從計(jì)算表達(dá)式2開始,若表達(dá)式2返回true,則繼續(xù)循環(huán),否則跳出整個(gè)for循環(huán)。【例4.11】在項(xiàng)目中創(chuàng)建Circulate類,在主方法中使用for循環(huán)語(yǔ)句來(lái)計(jì)算2~100所有偶數(shù)之和。publicclassCirculate{//創(chuàng)建Circulate類publicstaticvoidmain(Stringargs[]){//主方法intsum=0;//聲明變量,用于保存各數(shù)相加后的結(jié)果for(inti=2;i<=100;i+=2){//指定循環(huán)條件及循環(huán)體sun=sum+1;}System.out.println("2到100之間的所有偶數(shù)之和為:"+sum);//將相加后的結(jié)果輸出}}其運(yùn)行結(jié)果如下。2到100之間的所有偶數(shù)之和為:25502.foreach語(yǔ)句foreach語(yǔ)句是for語(yǔ)句的特殊簡(jiǎn)化版本,foreach語(yǔ)句并不能完全取代for語(yǔ)句,然而任何foreach語(yǔ)句都可以改寫為for語(yǔ)句版本、foreach并不是一個(gè)關(guān)鍵字,習(xí)慣上將這種特殊的for語(yǔ)句格式稱之為foreach語(yǔ)句。foreach語(yǔ)句在遍歷數(shù)組等方面為程序員提供了很大的方便(第5章將會(huì)對(duì)數(shù)組進(jìn)行詳細(xì)的介紹)。其語(yǔ)法格式如下:for(元素變量x:遍歷對(duì)象obj){引用了x的Java語(yǔ)句;}對(duì)于foreach語(yǔ)句中的元素變量x,不必對(duì)其進(jìn)行初始化。下面通過(guò)一個(gè)簡(jiǎn)單的例子來(lái)介紹foreach語(yǔ)句是怎樣遍歷數(shù)組的。【例4.12】在項(xiàng)目中創(chuàng)建Repetition類,在主方法中定義一維數(shù)組,并用foreach語(yǔ)句遍歷該數(shù)組。publicclassRepetition{//創(chuàng)建Repetition類publicstaticvoidmain(Stringargs[]){//主方法intarr[]={7,10,1};//聲明一維數(shù)組System.out.println("一維數(shù)組中的元素分別為:");//輸出信息for(intx:arr){//foreach語(yǔ)句System.out.println(x+"\t");}}}其運(yùn)行結(jié)果如下:一維數(shù)組中的元素分別為:71014.3.4?范例3:使用while循環(huán)遍歷數(shù)組本范例利用自增運(yùn)算符再結(jié)合while循環(huán)獲取每個(gè)數(shù)組元素的值,然后把它們輸出到控制臺(tái)中。其中,自增運(yùn)算符控制索引變量的遞增。示例運(yùn)行結(jié)果如下所示:我的花園里有很多鳥,種類大約包括:白鷺丹頂鶴黃鸝鸚鵡烏鴉喜鵲布谷鳥灰紋鳥百靈鳥創(chuàng)建ErgodicArray類,在該類的主方法中創(chuàng)建一個(gè)鳥類數(shù)組,然后創(chuàng)建一個(gè)索引變量,這個(gè)變量用于指定數(shù)組下標(biāo),隨著該索引的遞增,while循環(huán)會(huì)逐步獲取數(shù)組中每個(gè)的元素并輸出到控制臺(tái)中。示例代碼如下:publicclassErgodicArray{publicstaticvoidmain(String[]args){String[]aves=newString[]{"白鷺","丹頂鶴","黃鸝","鸚鵡","烏鴉","喜鵲","布谷鳥","灰紋鳥","百靈鳥"};//創(chuàng)建鳥類數(shù)組intindex=0;//創(chuàng)建索引變量System.out.println("我的花園里有很多鳥,種類大約包括:");while(index<aves.length){//遍歷數(shù)組System.out.println(aves[index++]"");//自增索引值}}}4.3.5?范例4:使用for循環(huán)輸出九九乘法表Java基本語(yǔ)法中的for循環(huán)非常靈活并且可以嵌套使用,其中雙層for循環(huán)是程序開發(fā)中使用最為頻繁的,常用于操作表格數(shù)據(jù)。對(duì)于行數(shù)與列數(shù)相同的表格操作,代碼比較簡(jiǎn)單,但是類似九九乘法表就不好控制了,因?yàn)樗牧袛?shù)要與行數(shù)對(duì)應(yīng),可以說(shuō)這個(gè)表格是個(gè)三角形,本范例通過(guò)雙層循環(huán)輸出了九九乘法表。創(chuàng)建MultiplicationTable類,在該類的主方法中創(chuàng)建雙層for循環(huán)。第一層for循環(huán)稱為外層循環(huán),用于控制表格的行;第二層循環(huán)稱為內(nèi)層循環(huán),用于控制表格的列。這里第二層循環(huán)的控制變量非常重要,它的判斷條件是列數(shù)要等于行數(shù)的最大值,然后輸出內(nèi)層與外層循環(huán)控制變量的乘積,這樣就實(shí)現(xiàn)了九九乘法表。publicstaticvoidmain(String[]args){for(inti=1;i<=9;i++){//循環(huán)控制變量從1遍歷到9for(intj=1;j<=9;j++){//第二層循環(huán)控制變量與第一層最大索引相等System.out.println(j+"*"+i+"="j+"\t");//輸出計(jì)算結(jié)果但不換行}System.out.println();//在外層循環(huán)中換行}}}4.4跳轉(zhuǎn)語(yǔ)句Java語(yǔ)言中提供了3種跳轉(zhuǎn)語(yǔ)句,分別是break語(yǔ)句、continue語(yǔ)句和return語(yǔ)句。下面分別對(duì)這3種跳轉(zhuǎn)語(yǔ)句進(jìn)行詳細(xì)介紹。4.4.1?break語(yǔ)句break語(yǔ)句讀者應(yīng)該不會(huì)陌生,在介紹switch語(yǔ)句時(shí)已經(jīng)應(yīng)用過(guò)了。在switch語(yǔ)句中,break語(yǔ)句用于中止下面case語(yǔ)句的比較。實(shí)際上,break語(yǔ)句還可以應(yīng)用在for循環(huán)語(yǔ)句、while循環(huán)語(yǔ)句和do…while循環(huán)語(yǔ)句中,用于強(qiáng)行退出循環(huán),也就是忽略循環(huán)體中任何其他語(yǔ)句和循環(huán)條件的限制?!纠?.13】使用for循環(huán)語(yǔ)句計(jì)算1~100所有連續(xù)整數(shù)的和。publicclassMultiplicationTable{publicstaticvoidmain(String[]args);intsum=0;//定義保存數(shù)據(jù)和的int變量Stringflag="從1到100之間連續(xù)整數(shù)的和是:";//給出輸出信息for(inti=1;i<=100;i++){//循環(huán)獲取1~100的整數(shù)sum+=1;//將各數(shù)相加}System.out.println(flag+sum);//輸出相加后的結(jié)果}}其運(yùn)行結(jié)果如下:從1到100之間連續(xù)整數(shù)的和是:5050在上面的循環(huán)體中添加通過(guò)if語(yǔ)句控制的break語(yǔ)句,具體代碼如下:publicclassMultiplicationTable{publicstaticvoidmain(String[]args){intsum=0;Stringflag="從1到100之間連續(xù)整數(shù)的和是:";for(inti=1;i<=100;i++){//循環(huán)獲取1~100的整數(shù)sum+=1;//將各數(shù)進(jìn)行相加if(sum>1000){//如果sum大于1000flag="從1到"+i+"之間連續(xù)整數(shù)的和是;";break;//break關(guān)鍵字退出循環(huán)}}System.out.println(flag+sum);}}其運(yùn)行結(jié)果如下:從1到45之間連續(xù)整數(shù)的和是:1035從上面的兩段代碼中可以看出,雖然for循環(huán)被設(shè)計(jì)為計(jì)算1~100所有連續(xù)整數(shù)的和,但是由于當(dāng)累加和大于1000時(shí),使用break語(yǔ)句中止了for循環(huán)語(yǔ)句,所以當(dāng)循環(huán)結(jié)束時(shí),i的值并不等于100,而是等于45。需要說(shuō)明的是,使用break語(yǔ)句只能退出當(dāng)前循環(huán)。4.4.2?continue語(yǔ)句continue語(yǔ)句只能應(yīng)用在for循環(huán)語(yǔ)句、while循環(huán)語(yǔ)句和do…while循環(huán)語(yǔ)句中,用于讓程序直接跳過(guò)其后面的語(yǔ)句,從而進(jìn)行下一次循環(huán)?!纠?.14】在項(xiàng)目中創(chuàng)建ContinueDemo類,在主方法中應(yīng)用while循環(huán)語(yǔ)句和continue語(yǔ)句輸出10以內(nèi)的全部奇數(shù)。publicclassContinueDemo{publicstaticvoidmain(String[]args){inti=0;//定義循環(huán)增量System.out.println("10以內(nèi)的全部奇數(shù)是:");while(i<10){i++;//累加i的值if(i%2==0){//當(dāng)i的值能被2整除,表示該數(shù)不是奇數(shù)continue;//進(jìn)行下一次循環(huán)}System.out.println(i+"");//輸出i的值}}}其運(yùn)行結(jié)果如下:10以內(nèi)的全部奇數(shù)是:13579當(dāng)使用continue語(yǔ)句中止本次循環(huán)后,如果循環(huán)條件的結(jié)果為false,則退出循環(huán),否則繼續(xù)下一次循環(huán)。4.4.3?return語(yǔ)句return語(yǔ)句可以從一個(gè)方法返回,并把控制權(quán)交給調(diào)用它的語(yǔ)句。其語(yǔ)法格式如下:return[表達(dá)式];表達(dá)式:可選參數(shù),表示要返回的值。它的數(shù)據(jù)類型必須與方法聲明中的返回值類型一致,可以通過(guò)強(qiáng)制類型轉(zhuǎn)換實(shí)現(xiàn)。return語(yǔ)句通常放在被調(diào)用方法的最后,用于退出當(dāng)前方法并返回一個(gè)值。當(dāng)把單獨(dú)的return語(yǔ)句放在一個(gè)方法的中間時(shí),會(huì)產(chǎn)生UnreachableCode編譯錯(cuò)誤。但是可以通過(guò)把return語(yǔ)句用if語(yǔ)句括起來(lái)的方法,即將return語(yǔ)句放在一個(gè)方法中間,用來(lái)實(shí)現(xiàn)在程序未執(zhí)行完所有代碼時(shí)退出方法的功能。4.4.4?范例5:終止循環(huán)體循環(huán)用于處理復(fù)雜的業(yè)務(wù),可以提高程序的性能和代碼的可讀性,但是循環(huán)中也有特殊情況,如由于某些原因需要立刻中斷循環(huán)去執(zhí)行下面的業(yè)務(wù)邏輯。示例運(yùn)行結(jié)果如下:----------中斷單層循環(huán)的例子。----------在你發(fā)現(xiàn)第一只老鷹之前,告訴我都有什么鳥。有:白鷺有:丹頂鶴有:黃鸝有:鸚鵡有:烏鴉有:喜鵲----------中斷雙層循環(huán)的例子。----------寶寶這次考試成績(jī):數(shù)學(xué)語(yǔ)文英語(yǔ)美術(shù)歷史67786322等等,22分的是什么?這個(gè)為什么不及格?在項(xiàng)目中創(chuàng)建BreakCyc類,在該類的主方法中創(chuàng)建一個(gè)字符串?dāng)?shù)組,在使用foreach語(yǔ)句遍歷時(shí)判斷,如果發(fā)現(xiàn)數(shù)組中包含字符串“老鷹”則立刻中斷循環(huán),然后創(chuàng)建一個(gè)整數(shù)類型二維數(shù)組,使用雙層foreach循環(huán)遍歷,當(dāng)發(fā)現(xiàn)第一個(gè)小于60的數(shù)組元素時(shí),則立刻中斷整個(gè)雙層循環(huán),而不是內(nèi)層循環(huán)。示例代碼如下:publicclassBreakCyc{publicstaticvoidmain(String[]args){Ststem.out.printlin("\n----------中斷單層循環(huán)的例子。----------");String[]array=newString[]{"白鷺","丹頂鶴","黃鸝","鸚鵡","烏鴉","喜鶴","老鷹","布谷鳥","老鷹","灰紋鳥","老鷹","百靈鳥"};//創(chuàng)建數(shù)組System.out.println("在你發(fā)現(xiàn)第一只老鷹之前,告訴我都有什么鳥。");for(Stringstring:array){//foreach遍歷數(shù)組if(stringequals("老鷹"))//如果遇到老鷹break;//中斷循環(huán)System.out.println("有:"+string+"");//foreach循環(huán)遍歷數(shù)組1,如果遇到老鷹1,中斷循環(huán),否則輸出數(shù)組元素System.out.println("\n\n--------中斷雙層循環(huán)的例子。------);int[][]myScores=newint[][]{{67,78,63,22,66},{55,68.78,95,44),{95,97,92.93,81}};//創(chuàng)建成績(jī)數(shù)組System.out.println("寶寶這次考試成績(jī):\n數(shù)學(xué)\t語(yǔ)文\t英語(yǔ)\t美術(shù)\t歷史");No1.for(int[]is:myScores){//遍歷成績(jī)表格for(inti:is){System.out.print(i+"\t");if(i<60){//如果中途遇到不及格的,立刻中斷所有輸出System.out.println("\n等等,"+i+"分的是什么?這個(gè)為什么不及格?");breakNo1;}}System.out.println();}}}4.4.5?范例6:循環(huán)體的過(guò)濾器循環(huán)體中可以通過(guò)break語(yǔ)句中斷整個(gè)循環(huán),這增加了循環(huán)的控制能力,但是對(duì)于特殊情況還是不夠,例如,某些條件下需要放棄部分循環(huán)處理,而不是整個(gè)循環(huán)體。Java提供了continue語(yǔ)句來(lái)實(shí)現(xiàn)這一功能,continue可以放棄本次循環(huán)體中的剩余代碼,不執(zhí)行它們而開始下一輪的循環(huán)。本范例利用continue語(yǔ)句實(shí)現(xiàn)了循環(huán)體過(guò)濾器,可以過(guò)濾“老鷹”字符串,并做相應(yīng)的處理,但是放棄continue語(yǔ)句之后的所有代碼。示例運(yùn)行結(jié)果如下:在我的花園里有很多鳥類,但是最近來(lái)了幾只老鷹,請(qǐng)幫我把它們抓走搜索鳥類,發(fā)現(xiàn)了:白鷺?biāo)阉鼬B類,發(fā)現(xiàn)了:丹頂鶴搜索鳥類,發(fā)現(xiàn)了:黃鸝搜索鳥類,發(fā)現(xiàn)了:鸚鵡搜索鳥類,發(fā)現(xiàn)了:烏鴉搜索鳥類,發(fā)現(xiàn)了:喜鵲發(fā)現(xiàn)一只老鷹,已經(jīng)抓到籠子里搜索鳥類,發(fā)現(xiàn)了:布谷鳥發(fā)現(xiàn)一只老鷹,已經(jīng)抓到籠子里搜索鳥,發(fā)現(xiàn)了:灰紋鳥發(fā)現(xiàn)一只老鷹,已經(jīng)抓到籠子里搜索鳥類,發(fā)現(xiàn)了:百靈鳥一共捉到了:3只老鷹在項(xiàng)目中創(chuàng)建CycFilter類,在該類的主方法中創(chuàng)建鳥類名稱的字符串?dāng)?shù)組,其中包含多個(gè)“老鷹”字符串,然后通過(guò)foreach循環(huán)遍歷該數(shù)組。在循環(huán)過(guò)程中,如果遍歷的數(shù)組元素是“老鷹”字符串,則輸出發(fā)現(xiàn)老鷹的信息并過(guò)濾循環(huán)體之后的所有代碼。示例代碼如下:publicclassCycFilter{publicstaticvoidmain(String[]args){String[]arraynewString[]{"白鷺","丹頂鶴","黃鸝","鸚鵡","烏鴉","喜鶴","老鷹","布谷鳥","老鷹","灰紋鳥"","老鷹","百靈鳥"};//創(chuàng)建數(shù)組System.out.println("在我的花園里有很多鳥類,但是最近來(lái)了幾只老鷹,請(qǐng)幫我把它們抓走。");inteagleCount=0;for(Stringstring:array){//foreach遍歷數(shù)組if(string.equals("老鷹")){//如果遇到老鷹System.outprintln("發(fā)現(xiàn)一只老鷹,已經(jīng)抓到籠子里");eagleCount++;continue;}//中斷循環(huán)System.out.println("搜索鳥類,發(fā)現(xiàn)了:"+string);//否則輸出數(shù)組元素}System.out.println("一共捉到了:"+eagleCount+"只老鷹");}}break語(yǔ)句和c
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年湖北省特種設(shè)備相關(guān)管理電梯模擬試題(含答案)
- 策劃部面試試題及答案
- 郵展評(píng)審員考試題及答案
- SQE質(zhì)量工程師招聘面試題及答案
- 大專教師考試題目及答案
- 未來(lái)五年室內(nèi)專項(xiàng)體育場(chǎng)所服務(wù)市場(chǎng)需求變化趨勢(shì)與商業(yè)創(chuàng)新機(jī)遇分析研究報(bào)告
- 2026黑龍江哈爾濱市香坊第二小學(xué)校招聘體育教師1人備考題庫(kù)附答案
- 中共嘉興市委宣傳部所屬事業(yè)單位公開選聘工作人員2人考試備考題庫(kù)附答案
- 中國(guó)雄安集團(tuán)有限公司2026校園招聘50人考試備考題庫(kù)附答案
- 關(guān)于公開考調(diào)政協(xié)青川縣委員會(huì)宣教中心工作人員的參考題庫(kù)附答案
- 供貨保障方案及應(yīng)急措施
- 建設(shè)工程施工專業(yè)分包合同(GF-2003-0213)
- TOC基本課程講義學(xué)員版-王仕斌
- 標(biāo)準(zhǔn)化在企業(yè)知識(shí)管理和學(xué)習(xí)中的應(yīng)用
- 初中語(yǔ)文新課程標(biāo)準(zhǔn)與解讀課件
- 本質(zhì)安全設(shè)計(jì)及其實(shí)施
- 中建通風(fēng)與空調(diào)施工方案
- GB/T 3683-2023橡膠軟管及軟管組合件油基或水基流體適用的鋼絲編織增強(qiáng)液壓型規(guī)范
- 包裝秤說(shuō)明書(8804C2)
- 高考語(yǔ)言運(yùn)用題型之長(zhǎng)短句變換 學(xué)案(含答案)
- 濟(jì)青高速現(xiàn)澆箱梁施工質(zhì)量控制QC成果
評(píng)論
0/150
提交評(píng)論