版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
單元3
Java控制結(jié)構(gòu)順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)break和continue語(yǔ)句單元三Java控制結(jié)構(gòu)Java控制結(jié)構(gòu)是Java編程中的基本概念,是指在程序運(yùn)行時(shí),程序員通過(guò)控制程序的執(zhí)行流程來(lái)實(shí)現(xiàn)某種特定的功能。Java控制結(jié)構(gòu)是程序員的必備技能,是走向Java世界的第一把鑰匙。本單元重點(diǎn)介紹Java控制結(jié)構(gòu),Java程序的控制結(jié)構(gòu)有順序結(jié)構(gòu)、選擇(分支)結(jié)構(gòu)和循環(huán)結(jié)構(gòu),通過(guò)本單元的學(xué)習(xí),讀者能夠熟練掌握J(rèn)ava控制語(yǔ)句格式和應(yīng)用。本單元的學(xué)習(xí)目標(biāo)如下。教學(xué)目標(biāo)知識(shí)目標(biāo):技能目標(biāo):素養(yǎng)目標(biāo):掌握J(rèn)ava程序基本結(jié)構(gòu)掌握J(rèn)ava的基本語(yǔ)法熟悉Java的基本語(yǔ)句能夠運(yùn)用Java基本語(yǔ)法和語(yǔ)句完成任務(wù)實(shí)現(xiàn)能夠在Java程序中添加必須的注釋,提高程序的可讀性能夠獨(dú)立完成拓展任務(wù)保持飽滿的學(xué)習(xí)熱情懂得知識(shí)技能儲(chǔ)備的必要性教學(xué)目標(biāo)知識(shí)目標(biāo):掌握J(rèn)ava執(zhí)行控制語(yǔ)句的分類掌握每一種執(zhí)行控制語(yǔ)句的功能、格式和應(yīng)用熟悉跳轉(zhuǎn)語(yǔ)句的功能、格式和應(yīng)用技能目標(biāo):能夠運(yùn)用執(zhí)行控制語(yǔ)句完成任務(wù)實(shí)現(xiàn)能夠編寫具有良好可讀性、符合編碼規(guī)范的Java程序能夠獨(dú)立完成拓展任務(wù)素養(yǎng)目標(biāo):具備持之以恒的學(xué)習(xí)態(tài)度懂得互幫互助共同進(jìn)步的理念3.1知識(shí)儲(chǔ)備–
順序結(jié)構(gòu)3.1知識(shí)儲(chǔ)備計(jì)算機(jī)語(yǔ)言的程序控制結(jié)構(gòu)是計(jì)算機(jī)之父——圖靈提出來(lái)的,他認(rèn)為所有的程序,小到一個(gè)計(jì)算器,大到宇宙飛船,無(wú)論是多么復(fù)雜的程序,只需要用三種結(jié)構(gòu)就可以將它設(shè)計(jì)出來(lái),這三種結(jié)構(gòu)被稱為三大基本結(jié)構(gòu),即順序、選擇(分支)和循環(huán)結(jié)構(gòu),其執(zhí)行原理如圖3-1所示。3.1.1順序結(jié)構(gòu)順序結(jié)構(gòu)是最常用的程序結(jié)構(gòu),也是最簡(jiǎn)單的程序結(jié)構(gòu),它的執(zhí)行順序自上而下,依次執(zhí)行,順序結(jié)構(gòu)執(zhí)行過(guò)程如圖3-2所示。語(yǔ)句1語(yǔ)句2……語(yǔ)句n圖3-2順序結(jié)構(gòu)執(zhí)行過(guò)程3.1.1順序結(jié)構(gòu)【例3-1】編寫一個(gè)程序,計(jì)算10+20的和,在控制臺(tái)輸出結(jié)果。定義整型變量x,y10=>x20=>y開(kāi)始輸出:x+y的值結(jié)束通過(guò)流程圖分析案例執(zhí)行過(guò)程3.1.1順序結(jié)構(gòu)【例3-1】編寫一個(gè)程序,計(jì)算10+20的和,在控制臺(tái)輸出結(jié)果。代碼實(shí)現(xiàn):publicclassSum{
publicstaticvoidmain(String[]args){
intx,y;
x=10;
y=20;
System.out.println(x+y);
}
}運(yùn)行結(jié)果:提示:在定義變量的同時(shí)可以賦初值,即,intx=10,y=20;可以代替前3條語(yǔ)句。順序結(jié)構(gòu)通常語(yǔ)句的先后順序不可改變,但在不影響運(yùn)行結(jié)果的情況下也可以調(diào)整,例題中的變量x和y的賦值語(yǔ)句順序可以調(diào)換。3.1知識(shí)儲(chǔ)備–
選擇結(jié)構(gòu)
if單分支if雙分支if多分支switch多分支3.1.2選擇結(jié)構(gòu)我們?cè)谌粘I钪?,?jīng)常需要根據(jù)條件做出選擇,比如,一年一度的高考成績(jī)下來(lái)后,每位考生都會(huì)根據(jù)自己的興趣愛(ài)好以及近年來(lái)不同院校不同專業(yè)的分?jǐn)?shù)段來(lái)確定報(bào)考志愿。程序也一樣,通過(guò)選擇結(jié)構(gòu)來(lái)確定程序的執(zhí)行順序,選擇結(jié)構(gòu)分為單分支選擇結(jié)構(gòu)、雙分支選擇結(jié)構(gòu)和多分支選擇結(jié)構(gòu)三種。1.if單分支結(jié)構(gòu)(1)一般格式
if(條件表達(dá)式){
語(yǔ)句塊;}3.1.2選擇結(jié)構(gòu)(2)執(zhí)行過(guò)程if有三種形式,第一種形式為單分支選擇結(jié)構(gòu)(簡(jiǎn)稱單分支),當(dāng)條件成立時(shí),執(zhí)行if語(yǔ)句體,之后再執(zhí)行if后面的語(yǔ)句;當(dāng)條件不成立時(shí),跳過(guò)if語(yǔ)句塊,直接執(zhí)行if后面的語(yǔ)句。其執(zhí)行過(guò)程如圖3-17。條件表達(dá)式語(yǔ)句truefalse圖3-17單分支結(jié)構(gòu)執(zhí)行過(guò)程3.1.2選擇結(jié)構(gòu)(3)說(shuō)明
條件表達(dá)式一般是邏輯表達(dá)式或者關(guān)系表達(dá)式,一定要用()括起來(lái)。
表達(dá)式后面不允許加分號(hào),如果加分號(hào),就意味著語(yǔ)句體為空語(yǔ)句。例如:if(條件表達(dá)式);{
語(yǔ)句塊;}
其中第一個(gè)分號(hào)將被看為條件表達(dá)式成立時(shí)要執(zhí)行的語(yǔ)句體(空語(yǔ)句),而其后的“語(yǔ)句”則無(wú)論條件表達(dá)式是否成立均將執(zhí)行。
如果if后的語(yǔ)句只有一條,大括號(hào)可以省略。例如:if(條件表達(dá)式)語(yǔ)句1;3.1.2選擇結(jié)構(gòu)【例3-4】編寫一個(gè)程序,輸入兩個(gè)實(shí)數(shù),按值由小到大的次序輸出這兩個(gè)數(shù)。請(qǐng)輸入兩個(gè)整數(shù):圖3-18例3-4流程圖開(kāi)始輸入x,y的值結(jié)束x>ytrue定義浮點(diǎn)型變量x,y,t輸出:x,y的值
falsex=>t;y=>x;t=>y通過(guò)流程圖分析案例執(zhí)行過(guò)程3.1.2選擇結(jié)構(gòu)publicclassCompareNum1{
publicstaticvoidmain(String[]args){
floatx,y,t;
System.out.print("請(qǐng)輸入兩個(gè)數(shù):");
Scannersc=newScanner(System.in);
x=sc.nextFloat();
y=sc.nextFloat();
if(x>y){
t=x;x=y;y=t;
}
System.out.println("從小到大順序:"+x+","+y);
sc.close();
}
}【例3-4】代碼如下:運(yùn)行結(jié)果:3.1.2選擇結(jié)構(gòu)提示:在將兩個(gè)變量中數(shù)據(jù)交換時(shí),需要使用中間變量,但切記每條語(yǔ)句的含義,若將if大括號(hào)內(nèi)的代碼寫成:t=x;y=x;y=t;結(jié)果如圖3-12所示。
Scanner類需要導(dǎo)包,其在java.util包下,接下來(lái)的例子中也需要注意這個(gè)知識(shí)點(diǎn)。
3.1.2選擇結(jié)構(gòu)2. if…else雙分支結(jié)構(gòu)(1)一般格式
if(條件表達(dá)式){
語(yǔ)句塊1;
}else{
語(yǔ)句塊2;}3.1.2選擇結(jié)構(gòu)(2)執(zhí)行過(guò)程
if…else雙分支是指當(dāng)條件成立時(shí),執(zhí)行語(yǔ)句1,之后再執(zhí)行if后面的語(yǔ)句;當(dāng)條件不成立時(shí),執(zhí)行語(yǔ)句2,之后再執(zhí)行if后面的語(yǔ)句。其執(zhí)行過(guò)程如圖3-23。圖3-23雙分支結(jié)構(gòu)執(zhí)行過(guò)程表達(dá)式語(yǔ)句1truefalse語(yǔ)句23.1.2選擇結(jié)構(gòu)(3)說(shuō)明
if與else的后面均沒(méi)有分號(hào)。
無(wú)論if還是else后的語(yǔ)句可以是一條語(yǔ)句,也可以是多條語(yǔ)句組成的復(fù)合語(yǔ)句。
if…else是一條語(yǔ)句,而不是兩條語(yǔ)句(if語(yǔ)句和else語(yǔ)句),else不能作為一條語(yǔ)句單獨(dú)使用,它必須是if語(yǔ)句的一部分,與if配對(duì)使用。
else子句后面沒(méi)有表達(dá)式。3.1.2選擇結(jié)構(gòu)【例3-6】編寫一個(gè)程序,實(shí)現(xiàn)從鍵盤輸入兩個(gè)整數(shù),輸出最大數(shù)。開(kāi)始提示請(qǐng)輸入兩個(gè)整數(shù):輸入x,y的值結(jié)束x<ytrue定義浮點(diǎn)型變量x,y輸出:x的值false輸出:y的值通過(guò)流程圖分析案例執(zhí)行過(guò)程3.1.2選擇結(jié)構(gòu)【例3-6】編寫一個(gè)程序,實(shí)現(xiàn)從鍵盤輸入兩個(gè)整數(shù),輸出最大數(shù)。代碼實(shí)現(xiàn):package.cvit;
importjava.util.Scanner;
/**
*if...else雙分支實(shí)現(xiàn)輸出兩個(gè)整數(shù)中的最大數(shù)
*/
publicclassMaxNum1{
publicstaticvoidmain(String[]args){
intx,y;
//定義變量
System.out.print("請(qǐng)輸入兩個(gè)整數(shù):");
//提示輸入兩個(gè)整數(shù)
Scannersc=newScanner(System.in);
//創(chuàng)建Scanner對(duì)象
//輸入兩個(gè)整數(shù),分別存入變量x和y中
x=sc.nextInt();
y=sc.nextInt();
//比較兩個(gè)數(shù),若x>y,輸入x,否則輸入y
if(x>y){
System.out.println("最大值為:"+x);
}else{
System.out.println("最大值為:"+y);
}
sc.close();
//關(guān)閉資源
}
}3.1.2選擇結(jié)構(gòu)【例3-6】編寫一個(gè)程序,實(shí)現(xiàn)從鍵盤輸入兩個(gè)整數(shù),輸出最大數(shù)。運(yùn)行結(jié)果:提示:既可以通過(guò)單分支結(jié)構(gòu)實(shí)現(xiàn),又可以通過(guò)雙分支結(jié)構(gòu)實(shí)現(xiàn),建議使用后者,可以使代碼更簡(jiǎn)潔。雙分支結(jié)構(gòu),條件成立,執(zhí)行if子塊,不成立,執(zhí)行else子塊。3.1.2選擇結(jié)構(gòu)3.if…elseif…else多分支結(jié)構(gòu)(1)一般格式if(條件表達(dá)式1){語(yǔ)句塊1;
}elseif(條件表達(dá)式2){
語(yǔ)句塊2;}……elseif(條件表達(dá)式n){
語(yǔ)句塊n;
}else{
語(yǔ)句塊n+1;}3.1.2選擇結(jié)構(gòu)(2)執(zhí)行過(guò)程多個(gè)分支是指依次判斷表達(dá)式的值,當(dāng)出現(xiàn)某個(gè)值為true時(shí),則執(zhí)行其對(duì)應(yīng)的語(yǔ)句塊。然后跳到整個(gè)if語(yǔ)句之外繼續(xù)執(zhí)行程序。如果所有的表達(dá)式均為false,則執(zhí)行語(yǔ)句塊n+1。其執(zhí)行過(guò)程如圖3-31所示。true
表達(dá)式1truefalse
表達(dá)式1表達(dá)式2表達(dá)式3false
true
表達(dá)式nfalse
……表達(dá)式n+1false語(yǔ)句塊n+1語(yǔ)句塊n語(yǔ)句塊3語(yǔ)句塊2語(yǔ)句塊1true
true
……【例3-9】從鍵盤輸入一個(gè)成績(jī),判斷其屬于哪個(gè)等級(jí),我們將成績(jī)分為五個(gè)等級(jí)。成績(jī)大于等于90等級(jí)為A;成績(jī)大于等于80,且小于90等級(jí)為B;成績(jī)大于等于70,且小于80等級(jí)為C;成績(jī)大于等于60,且小于70等級(jí)為D;成績(jī)小于60,等級(jí)為E。truetruefalsescore>=90?false
truefalse
……false
true真開(kāi)始定義浮點(diǎn)型變量:score提示輸入成績(jī)輸入成績(jī)score輸出:成績(jī)?yōu)锳score>=80?輸出:成績(jī)?yōu)锽score>=70?輸出:成績(jī)?yōu)镃score>=60?輸出:成績(jī)?yōu)镋輸出:成績(jī)?yōu)镈結(jié)束3.1.2選擇結(jié)構(gòu)通過(guò)流程圖分析案例執(zhí)行過(guò)程3.1.2選擇結(jié)構(gòu)【例3-9】從鍵盤輸入一個(gè)成績(jī),判斷其屬于哪個(gè)等級(jí)。代碼實(shí)現(xiàn):publicstaticvoidmain(String[]args){
floatscore;
//1.定義成績(jī)變量
System.out.print("請(qǐng)輸入成績(jī):");
//2.提示輸入成績(jī)
Scannersc=newScanner(System.in);
//3.創(chuàng)建Scanner對(duì)象
score=sc.nextFloat();
//4.輸入成績(jī)
if(score>=90){
//5.判斷成績(jī)等級(jí)并輸出
System.out.println("該科成績(jī)?yōu)椋篈");
}elseif(score>=80){
System.out.println("該科成績(jī)?yōu)椋築");
}elseif(score>=70){
System.out.println("該科成績(jī)?yōu)椋篊");
}elseif(score>=60){
System.out.println("該科成績(jī)?yōu)椋篋");
}else{
System.out.println("該科成績(jī)?yōu)椋篍");
}
sc.close();
//6.關(guān)閉資源
}3.1.2選擇結(jié)構(gòu)運(yùn)行結(jié)果:【例3-9】從鍵盤輸入一個(gè)成績(jī),判斷其屬于哪個(gè)等級(jí)。提示:(1)如果輸入數(shù)據(jù)不在【0,100】之間,會(huì)出現(xiàn)錯(cuò)誤的結(jié)果,只需要在輸入數(shù)據(jù)后加一個(gè)判斷就可以解決,這個(gè)問(wèn)題交給同學(xué)們自行解決。(2)if多分支選擇結(jié)構(gòu)中,當(dāng)所有的條件均不成立時(shí),執(zhí)行最后一個(gè)else子句。3.1.2選擇結(jié)構(gòu)5.switch多分支結(jié)構(gòu)if多分支和switch多分支都屬于多分支選擇結(jié)構(gòu)。if多分支結(jié)構(gòu)適用于多種情形的事件,switch多分支更適合處理分支情況較多,判斷條件類型單一,只有一個(gè)入口的事件。(1)一般格式
switch(表達(dá)式){ case常量表達(dá)式1:語(yǔ)句塊1;[break;]case常量表達(dá)式2:語(yǔ)句塊2;[break;]……case常量表達(dá)式n:語(yǔ)句塊n;[break;][default:語(yǔ)句組;[break;]] }(2)執(zhí)行過(guò)程3.1.2選擇結(jié)構(gòu)-switch多分支表達(dá)式……常量表達(dá)式1常量表達(dá)式2常量表達(dá)式ndefault語(yǔ)句塊1……語(yǔ)句塊2語(yǔ)句塊n語(yǔ)句塊n+1breakbreak
break
break
(3)說(shuō)明
switch后面括號(hào)里面的表達(dá)式可以是整型、枚舉或者字符串,當(dāng)switch后面“表達(dá)式”的值與某個(gè)case后面的“常量表達(dá)式”的值相同時(shí),就執(zhí)行該case后面的語(yǔ)句塊;當(dāng)執(zhí)行到break語(yǔ)句時(shí),跳出switch語(yǔ)句,轉(zhuǎn)向執(zhí)行switch語(yǔ)句的下一條。
如果沒(méi)有任何一個(gè)case后面的“常量表達(dá)式”的值,與“表達(dá)式”的值匹配,則執(zhí)行default后面的語(yǔ)塊。然后,再執(zhí)行switch語(yǔ)句的下一條。
每一個(gè)case的常量表達(dá)式的值不能相同。3.1.2選擇結(jié)構(gòu)-switch多分支(3)說(shuō)明
各case與default的出現(xiàn)沒(méi)有先后順序,既可以先出現(xiàn)case后出現(xiàn)default,也可以先出現(xiàn)default后出現(xiàn)case。
在case子句后雖然包含一條以上執(zhí)行語(yǔ)句,但可以不用大括號(hào)括起來(lái),會(huì)自動(dòng)順序執(zhí)行本case子句后的所有語(yǔ)句。
執(zhí)行完case子句后,如果沒(méi)有break語(yǔ)句,流程控制轉(zhuǎn)到下一個(gè)case繼續(xù)執(zhí)行。case常量表達(dá)式只是起語(yǔ)句標(biāo)號(hào)作用,并不在該處進(jìn)行條件判斷。在執(zhí)行switch時(shí),根據(jù)switch后面表達(dá)式的值找到匹配的case子句,之后,不再進(jìn)行判斷。3.1.2選擇結(jié)構(gòu)-switch多分支【例3-11】從鍵盤輸入一個(gè)成績(jī),判斷其屬于哪個(gè)等級(jí),我們將成績(jī)分為五個(gè)等級(jí)。成績(jī)大于等于90等級(jí)為A;成績(jī)大于等于80,且小于90等級(jí)為B;成績(jī)大于等于70,且小于80等級(jí)為C;成績(jī)大于等于60,且小于70等級(jí)為D;成績(jī)小于60,等級(jí)為E。3.1.2選擇結(jié)構(gòu)-switch多分支其它0-56別9,10圖3-41例3-11流程圖開(kāi)始定義浮點(diǎn)型變量:score提示輸入成績(jī)輸入成績(jī)scorescore/10
輸出A級(jí)輸出B級(jí)輸出C級(jí)7輸出D級(jí)輸出E級(jí)輸入錯(cuò)誤結(jié)束break
8通過(guò)流程圖分析案例執(zhí)行過(guò)程【例3-11】從鍵盤輸入一個(gè)成績(jī),判斷其屬于哪個(gè)等級(jí)。代碼實(shí)現(xiàn):publicstaticvoidmain(String[]args){
floatscore;
//1.定義變量
System.out.print("請(qǐng)輸入成績(jī)【0-100】:");
//2.輸出提示信息
Scannersc=newScanner(System.in);
//3.創(chuàng)建Scanner對(duì)象
score=sc.nextFloat();
//4.將鍵盤輸入的成績(jī)存入變量score中
3.1.2選擇結(jié)構(gòu)-switch多分支【例3-11】從鍵盤輸入一個(gè)成績(jī),判斷其屬于哪個(gè)等級(jí)。
switch((int)(score/10))
//5.switch語(yǔ)句判斷成績(jī)范圍,輸出對(duì)應(yīng)的等級(jí)
{
case9:
case10:
System.out.println("該科成績(jī)?yōu)椋篈");break;
case8:
System.out.println("該科成績(jī)?yōu)椋築");break;
case7:
System.out.println("該科成績(jī)?yōu)椋篊");break;
case6:
System.out.println("該科成績(jī)?yōu)椋篋");break;
case5:
case4:
case3:
case2:
case1:
case0:
System.out.println("該科成績(jī)?yōu)椋篍");break;
default:
System.out.println("輸入錯(cuò)誤,請(qǐng)輸入0-100之間的數(shù)!");break;
}
sc.close();
//6.關(guān)閉資源
}3.1.2選擇結(jié)構(gòu)-switch多分支【例3-11】從鍵盤輸入一個(gè)成績(jī),判斷其屬于哪個(gè)等級(jí)。運(yùn)行結(jié)果:3.1.2選擇結(jié)構(gòu)-switch多分支提示:每個(gè)有獨(dú)立語(yǔ)句塊的case子句后必須有break語(yǔ)句,多個(gè)case子句執(zhí)行相同代碼時(shí),只需要在最后一個(gè)case語(yǔ)句后有語(yǔ)句塊,同時(shí)加break語(yǔ)句。輸入的成績(jī)?yōu)楦↑c(diǎn)類型,因此需要將score/10表達(dá)式的值進(jìn)行強(qiáng)制類型轉(zhuǎn)換,得到一個(gè)整數(shù)。3.1知識(shí)儲(chǔ)備–
循環(huán)結(jié)構(gòu)
while循環(huán)dowhile循環(huán)for循環(huán)3.1.3循環(huán)結(jié)構(gòu)“循環(huán)”顧名思義不斷重復(fù)同樣的工作,只有完成任務(wù),或者遇到特殊情況才會(huì)結(jié)束。Java語(yǔ)言中的循環(huán)結(jié)構(gòu)是重復(fù)執(zhí)行一條或者多條語(yǔ)句,直到條件不滿足為止。循環(huán)結(jié)構(gòu)與順序結(jié)構(gòu)和選擇(分支)結(jié)構(gòu)共同構(gòu)成了Java語(yǔ)言的三大基本結(jié)構(gòu),是Java程序的重要組成元素。Java語(yǔ)言循環(huán)結(jié)構(gòu)的基本形式有三種:while循環(huán)(當(dāng)型循環(huán))、do…while循環(huán)(直到型循環(huán))和for循環(huán)。3.1.3循環(huán)結(jié)構(gòu)-while循環(huán)
1.while循環(huán)while循環(huán)表示先判斷循環(huán)條件,當(dāng)滿足給定的條件時(shí)執(zhí)行循環(huán)體,并且在循環(huán)終端處流程自動(dòng)返回到循環(huán)入口;如果條件不滿足,則退出循環(huán)體直接到達(dá)流程出口處。因?yàn)槭恰爱?dāng)條件滿足時(shí)執(zhí)行循環(huán)”,即先判斷后執(zhí)行,所以稱該循環(huán)為當(dāng)型循環(huán)。(1)一般格式while(表達(dá)式){循環(huán)體語(yǔ)句塊;}其中,表達(dá)式是循環(huán)條件,語(yǔ)句塊為循環(huán)體。3.1.3循環(huán)結(jié)構(gòu)-while循環(huán)(2)執(zhí)行過(guò)程求解表達(dá)式的值,當(dāng)值為True時(shí),執(zhí)行循環(huán)體語(yǔ)句,當(dāng)值為false時(shí),跳出循環(huán)。其執(zhí)行過(guò)程如圖3-45所示。truefalse圖3-45while語(yǔ)句的執(zhí)行過(guò)程表達(dá)式循環(huán)體語(yǔ)句塊3.1.3循環(huán)結(jié)構(gòu)-while循環(huán)(3)說(shuō)明
while循環(huán)體可以是單條語(yǔ)句,也可以是復(fù)合語(yǔ)句,復(fù)合語(yǔ)句的大括號(hào)不可以省略。
while循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語(yǔ)句,否則,將出現(xiàn)無(wú)限循環(huán)。3.1.3循環(huán)結(jié)構(gòu)-while循環(huán)【例3-13】用while語(yǔ)句求。開(kāi)始定義整型變量:n=1,sum=0輸出sum的值n≤100sum+=n
n++
結(jié)束truefalse通過(guò)流程圖分析案例執(zhí)行過(guò)程3.1.3循環(huán)結(jié)構(gòu)-while循環(huán)【例3-13】用while語(yǔ)句求。代碼實(shí)現(xiàn):publicstaticvoidmain(String[]args){
intn=1,sum=0;
//1.定義循環(huán)次數(shù)變量n和累加和變量sum,并賦初值
while(n<=100){
//2.通過(guò)while循環(huán)條件,設(shè)置循環(huán)變量終值為100
sum+=n;
//2.1累加求和
n++;
//2.2循環(huán)變量自增
}
System.out.println("1-100的和為:"+sum);
//3.輸出和
}3.1.3循環(huán)結(jié)構(gòu)-while循環(huán)【例3-13】用while語(yǔ)句求。運(yùn)行結(jié)果:提示:while后邊的大括號(hào)不能省略,否則出現(xiàn)死循環(huán)。while循環(huán)體語(yǔ)句需要有使循環(huán)條件驅(qū)于結(jié)束的語(yǔ)句,否則無(wú)法跳出循環(huán)。3.1.3循環(huán)結(jié)構(gòu)-do
while循環(huán)do…while循環(huán)也是Java語(yǔ)言中應(yīng)用比較廣泛的循環(huán)語(yǔ)句,do…while循環(huán)是先執(zhí)行循環(huán)體語(yǔ)句塊,再判斷循環(huán)條件是否成立。(1)一般格式do{
循環(huán)體語(yǔ)句塊;
}while(條件表達(dá)式);while表達(dá)式后邊的分號(hào)不可缺省。3.1.3循環(huán)結(jié)構(gòu)-do
while循環(huán)(2)執(zhí)行過(guò)程do…while循環(huán)也稱直到型循環(huán),先執(zhí)行先一次循環(huán)體,然后求解條件表達(dá)式,表達(dá)式為true繼續(xù)執(zhí)行循環(huán)體,直到條件為false時(shí),退出循環(huán)。執(zhí)行過(guò)程如圖3-50所示。truefalse圖3-50do…while語(yǔ)句的執(zhí)行過(guò)程表達(dá)式循環(huán)體語(yǔ)句塊3.1.3循環(huán)結(jié)構(gòu)-do
while循環(huán)(3)說(shuō)明
可以用while和do…while處理同一問(wèn)題,一般情況下,結(jié)果相同。但是如果在一開(kāi)始循環(huán)條件就為假時(shí),兩者結(jié)果不同,while循環(huán)一次不執(zhí)行循環(huán)體,而do…while循環(huán)執(zhí)行一次循環(huán)體。
循環(huán)體語(yǔ)句可以是單條語(yǔ)句或者由大括號(hào)括起來(lái)的多條語(yǔ)句(復(fù)合語(yǔ)句)。
do…while循環(huán)體語(yǔ)句中應(yīng)有使循環(huán)趨向于結(jié)束的語(yǔ)句,否則,將出現(xiàn)無(wú)限循環(huán)。3.1.3循環(huán)結(jié)構(gòu)-do
while循環(huán)(3)說(shuō)明
do…while可以改造成“語(yǔ)句+while循環(huán)”,流程圖如圖3-51所示,由虛線框起來(lái)的部分為while語(yǔ)句。truefalse圖3-51語(yǔ)句+while循環(huán)表達(dá)式語(yǔ)句循環(huán)體語(yǔ)句塊while循環(huán)3.1.3循環(huán)結(jié)構(gòu)-dowhile循環(huán)【例3-15】編程輸出【100,200】之間能被7整除的數(shù)。開(kāi)始定義整型變量:n=100輸出nn%7==0n++
結(jié)束n<=200truetruefalsefalse通過(guò)流程圖分析案例執(zhí)行過(guò)程3.1.3循環(huán)結(jié)構(gòu)-dowhile循環(huán)【例3-15】編程輸出【100,200】之間能被7整除的數(shù)。代碼實(shí)現(xiàn):publicstaticvoidmain(String[]args){
intn=100;
//1.定義循環(huán)變量n,初值為100
do{
//2.do...while循環(huán)判斷并輸出
if(n%7==0){
//2.1循環(huán)體內(nèi)判斷n是否能被7整除,能,輸出n的值,不能,判斷下一個(gè)數(shù)
System.out.print(n+"\t");
}
n++;
//2.2循環(huán)變量增量
}while(n<=200);
//3.條件表達(dá)式后的分號(hào)不能省略
}3.1.3循環(huán)結(jié)構(gòu)-dowhile循環(huán)運(yùn)行結(jié)果:【例3-15】編程輸出【100,200】之間能被7整除的數(shù)。提示:do…while循環(huán),循環(huán)體語(yǔ)句至少執(zhí)行一次。do…while循環(huán)體內(nèi)同樣需要有使循環(huán)條件趨于結(jié)束的語(yǔ)句,例如n++。3.1.3循環(huán)結(jié)構(gòu)-for循環(huán)Java語(yǔ)言中的for循環(huán)是循環(huán)結(jié)構(gòu)中最靈活、最具特色的一種,它完全可以代替while和do…while循環(huán),它不僅可以解決循環(huán)次數(shù)固定的循環(huán)問(wèn)題,而且還可以解決循環(huán)次數(shù)不確定的循環(huán)問(wèn)題,其功能強(qiáng)大,應(yīng)用廣泛。(1)一般形式for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語(yǔ)句(2)執(zhí)行過(guò)程
先求解表達(dá)式1,確定循環(huán)變量的初值。
求解表達(dá)式2,若其值為true,執(zhí)行for語(yǔ)句中指定的內(nèi)嵌語(yǔ)句,然后執(zhí)行下面第步;若其值為false,結(jié)束循環(huán),執(zhí)行for語(yǔ)句下面的一條語(yǔ)句。
求解表達(dá)式3。
轉(zhuǎn)回第
步。圖3-56for循環(huán)執(zhí)行過(guò)程表達(dá)式1表達(dá)式2循環(huán)體語(yǔ)句塊表達(dá)式3truefalse3.1.3循環(huán)結(jié)構(gòu)-for循環(huán)(3)說(shuō)明
表達(dá)式1為循環(huán)變量的初值,表達(dá)式2為循環(huán)條件,表達(dá)式3為循環(huán)變量的增量。
for循環(huán)中的三個(gè)表達(dá)式可以任意缺省,但其分號(hào)不能省。表達(dá)式缺省將在下面例題中詳細(xì)說(shuō)明。3.1.3循環(huán)結(jié)構(gòu)-for循環(huán)【例3-17】用for循環(huán)求【1,100】之間自然數(shù)的和。開(kāi)始i=1i≤100sum=sum+ii++定義整型變量:i,sum=0輸出sum的值結(jié)束truefalse通過(guò)流程圖分析案例執(zhí)行過(guò)程3.1.3循環(huán)結(jié)構(gòu)-for循環(huán)【例3-17】用for循環(huán)求【1,100】之間所有自然數(shù)的和。代碼實(shí)現(xiàn):
publicstaticvoidmain(String[]args){
inti,sum=0;
//1.定義變量
for(i=1;i<=100;i++){
//2.for循環(huán)開(kāi)始,確定循環(huán)變量初值,終值和增量
sum+=i;
//2.1循環(huán)體,累加求和
}
System.out.println("sum="+sum);
//3.輸出結(jié)果
}3.1.3循環(huán)結(jié)構(gòu)-for循環(huán)【例3-17】用for循環(huán)求【1,100】之間所有自然數(shù)的和。運(yùn)行結(jié)果:提示:缺省表達(dá)式1,循環(huán)次數(shù)超大缺省表達(dá)式2,無(wú)限循環(huán)缺省表達(dá)式3,無(wú)限循環(huán)3.1.3循環(huán)結(jié)構(gòu)-for循環(huán)4.三種循環(huán)的比較(1)while循環(huán)和do…while循環(huán)適合循環(huán)次數(shù)不確定時(shí)使用,而循環(huán)次數(shù)確定時(shí)使用for循環(huán)更方便快捷。(2)do…while循環(huán)先執(zhí)行循環(huán)體,后判斷循環(huán)條件,而while循環(huán)和for循環(huán)是先判斷循環(huán)條件,后執(zhí)行循環(huán)體,因此,do…while更適合至少執(zhí)行一次循環(huán)的場(chǎng)合。(3)while循環(huán)和do…while循環(huán)變量賦初值應(yīng)該是while和do…while語(yǔ)句前完成,而for循環(huán)在表達(dá)式1中完成。3.1.3循環(huán)結(jié)構(gòu)-for循環(huán)5.循環(huán)嵌套如果一個(gè)循環(huán)結(jié)構(gòu)的循環(huán)體內(nèi)包含另外一個(gè)完整的循環(huán)結(jié)構(gòu),則稱這種結(jié)構(gòu)為循環(huán)嵌套結(jié)構(gòu),又稱多重循環(huán)。常用循環(huán)嵌套為兩重循環(huán),外層循環(huán)結(jié)構(gòu)稱為外循環(huán),內(nèi)層循環(huán)結(jié)構(gòu)稱為內(nèi)循環(huán)。3.1.3循環(huán)結(jié)構(gòu)-循環(huán)嵌套3.1知識(shí)儲(chǔ)備–
中斷語(yǔ)句
一般格式執(zhí)行過(guò)程應(yīng)用3.1.4中斷語(yǔ)句1.break語(yǔ)句break語(yǔ)句通常用在循環(huán)語(yǔ)句和switch(開(kāi)關(guān))語(yǔ)句中。當(dāng)break用于switch語(yǔ)句中時(shí),可使程序跳出switch而執(zhí)行switch以后的語(yǔ)句,break在switch中的用法在多分支結(jié)構(gòu)中已經(jīng)介紹。而break語(yǔ)句還可以用于do-while、for、while循環(huán)語(yǔ)句中,可使程序終止循環(huán)而執(zhí)行循環(huán)后面的語(yǔ)句,通常break語(yǔ)句總是與if語(yǔ)句連在一起。即滿足條件時(shí)便跳出循環(huán)。3.1.4中斷語(yǔ)句(1)一般格式
break;(2)執(zhí)行過(guò)程以while循環(huán)為例,執(zhí)行過(guò)程如圖所示。truefalse表達(dá)式語(yǔ)句塊1表達(dá)式2
truewhile循環(huán)的下一語(yǔ)句falsebreak語(yǔ)句塊2true表達(dá)式1
3.1.4中斷語(yǔ)句【例3-22】編寫一個(gè)程序,要求從鍵盤輸入多科成績(jī),當(dāng)輸入負(fù)時(shí),結(jié)束成績(jī)輸入,并輸出總成績(jī)。falsetruetruescore<0truesum+=score開(kāi)始定義變量score,sum=0輸入成績(jī)score輸出總分sum結(jié)束break通過(guò)流程圖分析案例執(zhí)行過(guò)程3.1.4中斷語(yǔ)句代碼實(shí)現(xiàn)publicstaticvoidmain(String[]args){
floatscore,sum=0;
//1.定義變量并賦初值
Scannersc=newScanner(System.in);
//2.創(chuàng)建Scanner對(duì)象
while(true){
//3.循環(huán)條件永遠(yuǎn)為真
System.out.print("請(qǐng)輸入成績(jī):");
//3.1提示輸入數(shù)據(jù)
score=sc.nextFloat();
//3.2鍵盤輸入成績(jī),并保存到變量score中
if(score<0)
//3.3判斷score是否為負(fù)
break;
//3.3.1如果成績(jī)?yōu)樨?fù),退出循環(huán)體
sum+=score;
//3.4.如果成績(jī)非負(fù),累加成績(jī)
}
System.out.println("sum="+sum);
//4.輸出總成績(jī)
}運(yùn)行結(jié)果:3.1.4中斷語(yǔ)句提示:如果不使用break語(yǔ)句,循環(huán)將無(wú)法結(jié)束。break語(yǔ)句通常與if語(yǔ)句配合使用。2.continue語(yǔ)句continue語(yǔ)句的作用是跳過(guò)循環(huán)本中剩余的語(yǔ)句而強(qiáng)行執(zhí)行下一次循環(huán)。continue語(yǔ)句只用在for、while、do-while等循環(huán)體中,常與if條件語(yǔ)句一起使用,用來(lái)加速循環(huán)。(1)一般格式continue;3.1.4中斷語(yǔ)句(1)一般格式continue;(2)執(zhí)行過(guò)程以while語(yǔ)句為例,其執(zhí)行過(guò)程如圖3-79所示。3.1.4中斷語(yǔ)句falsecontinue圖3-79while語(yǔ)句中的continuetruefalse表達(dá)式1
語(yǔ)句2表達(dá)式2
true語(yǔ)句塊1while循環(huán)的下一語(yǔ)句【例3-23】編寫一個(gè)程序,輸出1~100自然數(shù)中所有能被13整除的數(shù)。3.1.4中斷語(yǔ)句truei≤100i%13!=0truefalse開(kāi)始定義整型變量i輸出i的值結(jié)束i=1falsecontinue通過(guò)流程圖分析案例執(zhí)行過(guò)程3.1.4中斷語(yǔ)句
代碼實(shí)現(xiàn):
publicstaticvoidmain(String[]args){
inti;
//1.定義循環(huán)變量
System.out.print("100以內(nèi)能被13整除的數(shù)有:");
//2.輸出提示信息
for(i=1;i<=100;i++){
//3.for循環(huán)開(kāi)始
if(i%13!=0)
//3.1判斷循環(huán)變量是否能被13整除
continue;
//3.1.1如果不能整除,結(jié)束本次循環(huán),直接進(jìn)入一次循環(huán)
System.out.print(i+"
");
//3.2如果能整除,輸出i的值
}
}運(yùn)行結(jié)果:3.1.4中斷語(yǔ)句提示:輸出提示信息語(yǔ)句要放在循環(huán)外面。輸出各數(shù)之間用逗號(hào)分隔,避免都連在一起。3.2任務(wù)實(shí)現(xiàn)
3.2.1任務(wù)1:四則運(yùn)算3.2.2任務(wù)2:隨機(jī)出題1.任務(wù)描述四則運(yùn)算小程序,要求參與運(yùn)算的兩個(gè)操作數(shù)是隨機(jī)生成的[0,99]之間的整數(shù),運(yùn)算符由用戶鍵盤輸入,通過(guò)程序計(jì)算結(jié)果并輸出,運(yùn)行效果如圖3-74所示。
3.2.1任務(wù)1:四則運(yùn)算2.任務(wù)分析根據(jù)任務(wù)描述及要求對(duì)該程序分析如下:(1)通過(guò)Random類中的nextInt()方法,生成[0,99]之間
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 三百塊錢離婚協(xié)議書范文
- 店員合作協(xié)議書范文模板電子版
- 鏟車賣車合同協(xié)議書范文模板
- 分居兩地的協(xié)議書范文范本
- 建房安全協(xié)議書范文范本簡(jiǎn)單一點(diǎn)
- 銀行第三方打簽協(xié)議書范文
- 訂購(gòu)協(xié)議書范文只寫一個(gè)人名字
- 童年的發(fā)現(xiàn)的課件
- 全民健身:未來(lái)展望-滿足多元化需求開(kāi)啟健康生活
- 電商珠寶銷售新篇章-面對(duì)挑戰(zhàn)策略應(yīng)對(duì)與行動(dòng)計(jì)劃
- GB/T 30317-2013地理空間框架基本規(guī)定
- 六年級(jí)英語(yǔ)上冊(cè) Unit 8《The Universe》(Part B)2 閩教版
- 不對(duì)稱高壓脈沖軌道電路講義課件
- 煤礦掘進(jìn)隊(duì)工作總結(jié)及2023年工作計(jì)劃(2篇)
- animals-動(dòng)物-小學(xué)趣味英語(yǔ)課課件
- 板塊輪動(dòng)與龍頭股戰(zhàn)法原理
- 空氣采樣極早期煙霧探測(cè)系統(tǒng)簡(jiǎn)明設(shè)計(jì)安裝手冊(cè)
- 國(guó)家開(kāi)放大學(xué)《心理與健康》形考任務(wù)1-3參考答案
- 飼料行業(yè)會(huì)計(jì)科目表B
- 標(biāo)書實(shí)施方案
- 河北省保定市藥品零售藥店企業(yè)藥房名單目錄
評(píng)論
0/150
提交評(píng)論