java程序設(shè)計任務式教程 課件 3-程序設(shè)計邏輯結(jié)構(gòu)基礎(chǔ)_第1頁
java程序設(shè)計任務式教程 課件 3-程序設(shè)計邏輯結(jié)構(gòu)基礎(chǔ)_第2頁
java程序設(shè)計任務式教程 課件 3-程序設(shè)計邏輯結(jié)構(gòu)基礎(chǔ)_第3頁
java程序設(shè)計任務式教程 課件 3-程序設(shè)計邏輯結(jié)構(gòu)基礎(chǔ)_第4頁
java程序設(shè)計任務式教程 課件 3-程序設(shè)計邏輯結(jié)構(gòu)基礎(chǔ)_第5頁
已閱讀5頁,還剩62頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

JaVa程序設(shè)計任務式教程01任務3-1求解圓面積02任務3-2BMI健康值評估04任務3-4購買餐飲罐裝燃氣目錄CONTNETS單元三

程序設(shè)計邏輯結(jié)構(gòu)基礎(chǔ)03任務3-3神奇的自動販賣機單元目標能夠使用if語句、switch語句進行條件判斷。能夠使用for、while、do-while循環(huán)和循環(huán)嵌套設(shè)計循環(huán)操作。能夠使用break、continue語句和標簽控制循環(huán)的執(zhí)行流程。能夠使用方法實現(xiàn)程序設(shè)計中通用功能增強邏輯思維能力,設(shè)計合理的程序執(zhí)行流程。提高代碼的可讀性和可維護性,編寫結(jié)構(gòu)清晰的代碼。培養(yǎng)解決問題的能力,使用控制流程語句解決實際問題。知識目標能力目標素養(yǎng)目標學習目標理解控制流程語句的作用,掌握不同控制流程語句的使用方法。能夠使用控制流程語句控制程序的執(zhí)行流程。能夠編寫程序?qū)崿F(xiàn)各種邏輯判斷和循環(huán)操作。理解方法的概念和作用,掌握使用方法實現(xiàn)程序設(shè)計。01任務3-1求解圓面積順序結(jié)構(gòu)任務3-1求解圓面積-順序結(jié)構(gòu)順序結(jié)構(gòu)程序代碼順序結(jié)構(gòu)是程序中最簡單最基本的流程控制,沒有特定的語法結(jié)構(gòu),在源代碼中出現(xiàn)的順序依次執(zhí)行publicclassMain{ publicstaticvoidmain(String[]args){ //第一步:聲明變量

inta=10; intb=20; //第二步:執(zhí)行加法操作

intsum=a+b; //第三步:輸出結(jié)果

System.out.println("計算結(jié)果:"+sum); }}任務3-1求解圓面積-任務實現(xiàn)1.使用鍵盤輸入一個圓形的半徑數(shù)值,并將輸入的半徑賦值給radius變量,然后關(guān)閉scanner。

Scannerscanner=newScanner(System.in);inti=scanner.nextInt();2.定義一個雙精度變量area,使用數(shù)學函數(shù)和圓面積公式,求解面積。

doubleradius=Math.PI*radius*radius;3.將求解結(jié)構(gòu)輸出到控制臺。代碼參考教材中的CircleArea.java程序運行結(jié)果如下圖02任務3-2BMI健康值評估基本if選擇結(jié)構(gòu)

if-else選擇結(jié)構(gòu)多重if選擇結(jié)構(gòu)嵌套if選擇結(jié)構(gòu)

Switch選擇結(jié)構(gòu)任務3-2BMI健康值評估-選擇結(jié)構(gòu)語句基本if選擇結(jié)構(gòu)if條件語句是一個重要的編程語句,用于告訴程序在某個條件成立的情況下執(zhí)行某段語句,否則執(zhí)行后續(xù)語句。關(guān)鍵字if之后是作為條件的“布爾表達式”,如果該表達式返回的結(jié)果為true,則執(zhí)行其后的語句;若為false,則不執(zhí)行if條件之后的語句。其語法格式如下:if(布爾表達式){

執(zhí)行語句}基本if選擇結(jié)構(gòu)if條件語句是一個重要的編程語句,用于告訴程序在某個條件成立的情況下執(zhí)行某段語句,否則執(zhí)行后續(xù)語句。關(guān)鍵字if之后是作為條件的“布爾表達式”,如果該表達式返回的結(jié)果為true,則執(zhí)行其后的語句;若為false,則不執(zhí)行if條件之后的語句。其語法格式如下:if(布爾表達式){

執(zhí)行語句}任務3-2BMI健康值評估-選擇結(jié)構(gòu)語句基本if選擇結(jié)構(gòu)if語句的具體用法如例3-1

判斷一個人的年齡是否大于18歲,如果age值小于18則只輸出“開始”,如果age值大于18則輸出對應語句的結(jié)果publicclassRise{ publicstaticvoidmain(String[]args){ System.out.println("開始"); //如果年齡大于18歲,奮斗吧少年 intage=20; if(age>=18){ System.out.println("奮斗吧少年,青春路上絢麗多彩"); } }}上述代碼中,運行結(jié)果任務3-2BMI健康值評估-選擇結(jié)構(gòu)語句if-else選擇結(jié)構(gòu)if-else語句是指如果滿足特定條件,就執(zhí)行符合當前條件事語句,否則就執(zhí)行另一條件的語句。例如,要判斷一個正整數(shù)的奇偶,如果該數(shù)字能被2整除則是一個偶數(shù),否則該數(shù)字就是一個奇數(shù)。其語法格式如下:if(布爾表達式){

執(zhí)行語句1}else{

執(zhí)行語句2}任務3-2BMI健康值評估-選擇結(jié)構(gòu)語句If-else語句的具體用法,如例3-2判斷奇/偶數(shù)的程序publicclassOddorEven{ publicstaticvoidmain(String[]args){ intnum=256; if(num%2==0){ //判斷條件成立,num能被2整除 System.out.println(num+"是一個偶數(shù)"); }else{//判斷條件不成立,num不能被2整除 System.out.println(num+"是一個奇數(shù)"); } }}上述代碼中,運行結(jié)果if-else選擇結(jié)構(gòu)任務3-2BMI健康值評估-選擇結(jié)構(gòu)語句多重if選擇結(jié)構(gòu)多重if選擇結(jié)構(gòu)在Java中是一種常用的控制結(jié)構(gòu),用于在多個互斥條件的判斷條件的情況下進行決策。當一個條件不足以確定程序的執(zhí)行方向時,可以使用多個elseif語句按順序排列,每個條件分別進行判斷,繼而執(zhí)行能滿足條件對應的語句。每個if和elseif條件后面均必須跟隨一個{}塊,其中包含相應的代碼,elseif可以有多個,但是它們必須按照邏輯順序排列。最后一個elseif后面可以有一個可選的else塊,用于處理所有其他情況。其語法格式如下:if(布爾表達式1){

執(zhí)行語句1//條件1成立時的操作}elseif(布爾表達式2){

執(zhí)行語句2//條件1不成立,條件2成立時的操作}elseif(布爾表達式3){

執(zhí)行語句3//條件1和條件2都不成立,條件3成立時的操作}...//也可以最后用一個else來處理所有條件不成立的情況else{

執(zhí)行語句//上述條件都不成立時的操作}任務3-2BMI健康值評估-選擇結(jié)構(gòu)語句多重if選擇結(jié)構(gòu)多重if選擇顧客在實體連鎖店結(jié)算商品,不同會員身份價格不同,超出1000元還有會語句的具體用法,如例3-3判斷員惠上惠的案例,詳見DiscountCalculator.java:……12 if(membershipLevel.equals("SVIP")){13 baseDiscount=0.86;//默認無折扣

14 }15 elseif(membershipLevel.equals("金卡會員")){16 baseDiscount=0.9;17 }18 elseif(membershipLevel.equals("銀卡會員")){19 baseDiscount=0.95;20 }21 else22 {23 baseDiscount=1.0;24 }……設(shè)定買家為為“SVIP”會員,其折扣率為“0.86”,又因為其購買的商品總價為1200元,可繼續(xù)享受額外的滿1000的98折優(yōu)惠,運行結(jié)果如右圖任務3-2BMI健康值評估-選擇結(jié)構(gòu)語句嵌套if選擇結(jié)構(gòu)嵌套if語句是Java中常用的選擇結(jié)構(gòu),用于處理需要根據(jù)多個條件進行判斷的情況,嵌套if選擇結(jié)構(gòu)是指在一個if語句的代碼塊內(nèi)部,再嵌套一個或多個if語句,形成多層判斷的結(jié)構(gòu)。它用于處理需要根據(jù)多個條件進行判斷的情況。其語法格式如下:if(布爾表達式1){

執(zhí)行語句1if(布爾表達式2){

執(zhí)行語句2}else{

執(zhí)行語句3}}else{

執(zhí)行語句4}任務3-2BMI健康值評估-選擇結(jié)構(gòu)語句嵌套if選擇語句的具體用法,如例3-4判斷輸入任意3個整數(shù)作為三角形的邊長,判斷是否符合三角形的構(gòu)成,并判斷三角形的類型,詳見TriangleType.java……10if(a+b>c&&a+c>b&&b+c>a){//判斷是否為合法三角形

11 System.out.println("這是一個合法三角形。");12 13 if(a==b&&b==c){14 System.out.println("這是一個等邊三角形。");15 }elseif(a==b||a==c||b==c){16 System.out.println("這是一個等腰三角形。");17 }elseif(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a){18 System.out.println("這是一個直角三角形。");19 }else{20 System.out.println("這是一個普通三角形。");21 }22 }else{23 System.out.println("這不是一個合法三角形。");24 }25 }……嵌套if選擇結(jié)構(gòu)任務3-2BMI健康值評估-選擇結(jié)構(gòu)語句運行程序后,根據(jù)用戶輸入的3組數(shù)字,利用三角形邊長和的特性,判斷是否能夠構(gòu)成三角形。如果成立輸出“這是一個合法三角形”,并繼續(xù)判斷其邊長特殊屬于哪類三角形,并輸出結(jié)果;如果所給出的數(shù)值不能構(gòu)成三角形,則輸出“這不是一個合法三角形”,程序結(jié)束,但輸入3、4、5后程序運行結(jié)果:嵌套if選擇結(jié)構(gòu)任務3-2BMI健康值評估-選擇結(jié)構(gòu)語句switch選擇結(jié)構(gòu)也是一種很常用的選擇結(jié)構(gòu)語句,它由一個switch控制表達式和多個case關(guān)鍵字組成。與if條件語句不同的是,switch條件語句的控制表達式結(jié)果類型只能是byte、short、char、int、enum枚舉以及String類型,而不能是boolean類型,其語法格式如下:switch(控制表達式){ case目標值1:

執(zhí)行語句1 break; case目標值2:

執(zhí)行語句2 break;

... case目標值n:

執(zhí)行語句n break; default:

執(zhí)行語句n+1 break;}Switch選擇結(jié)構(gòu)任務3-2BMI健康值評估-選擇結(jié)構(gòu)語句switch選擇結(jié)構(gòu)的具體用法,如例3-5在智能產(chǎn)線工位上的機械臂接收到上工位指令后執(zhí)行操作的程序。詳見RoboticArmController.javaSwitch選擇結(jié)構(gòu)……4 switch(commandCode){5 case1:6 System.out.println("機械臂執(zhí)行抓取操作。");//執(zhí)行抓取操作

7 break;8 case2:9 System.out.println("機械臂執(zhí)行放置操作。");//執(zhí)行放置操作

10 break;11 case3:12 System.out.println("機械臂執(zhí)行向上移動操作。");//執(zhí)行向上移動操作

13 break;14 case4:15 System.out.println("機械臂執(zhí)行向下移動操作。");//執(zhí)行向下移動操作

16 break;17 case5:18 System.out.println("機械臂執(zhí)行順時針旋轉(zhuǎn)操作。");//執(zhí)行順時針旋轉(zhuǎn)操作

19 break;20 case6:21 System.out.println("機械臂執(zhí)行執(zhí)行逆時針旋轉(zhuǎn)操作。");//執(zhí)行逆時針旋轉(zhuǎn)操作

22 break;23 default:24 System.out.println("無效指令!");25 }……任務3-2BMI健康值評估-選擇結(jié)構(gòu)語句上述代碼中,當接收的指令為1-6的數(shù)字時,機械臂執(zhí)行相應的動作,如果不是設(shè)定的指令集,則提示“無效指令!”。程序默認輸入指令為“3”,其運行結(jié)果如圖Switch選擇結(jié)構(gòu)任務3-2BMI健康值評估-選擇結(jié)構(gòu)語句1.導入Scanne類,定義2個變量接收用戶輸入的身高和體重。2.將身高度量單位變換為米,同時轉(zhuǎn)換為雙精度數(shù)值,并根據(jù)BMI=體重(KG)/身高2

(CM),計算BMI值。3.使用if和多重if選擇結(jié)構(gòu)根據(jù)不同的BMI值范圍輸出對應的健康分類和風險程度提示。4.打印出BMI值和對應的健康分類及風險程度。代碼參考教材中的BMI.java程序運行結(jié)果如下圖任務3-2BMI健康值評估-任務實現(xiàn)03任務3-3神奇的自動販賣機while循環(huán)結(jié)構(gòu)do…while循環(huán)結(jié)構(gòu)for循環(huán)結(jié)構(gòu)Foreach循環(huán)語句循環(huán)嵌套跳轉(zhuǎn)語句任務3-3神奇的自動販賣機-

循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)-while循環(huán)結(jié)構(gòu)while循環(huán)結(jié)構(gòu)與選擇結(jié)構(gòu)語句執(zhí)行流程近似,均是根據(jù)條件判斷來決定是否執(zhí)行大括號{}內(nèi)的執(zhí)行語句,是一種迭代控制結(jié)構(gòu)。區(qū)別在于,while語句會循環(huán)判斷循環(huán)條件是否成立,只要條件成立,{}內(nèi)的執(zhí)行語句就會執(zhí)行,直到循環(huán)條件不成立,while循環(huán)才結(jié)束,用于需要重復執(zhí)行某個任務或操作的場景,其語法格式如下:while(循環(huán)條件){

執(zhí)行語句 ...}任務3-3神奇的自動販賣機-

循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)-while循環(huán)結(jié)構(gòu)while循環(huán)結(jié)構(gòu)的具體用法,如例3-6智能產(chǎn)線簡單生產(chǎn)過程,產(chǎn)線開始生成產(chǎn)品時則開始計數(shù),直到達到目標數(shù)量5個產(chǎn)品,程序提示進行一次工位矯正操作,并輸出“生產(chǎn)任務完成,請對工位矯正操作!”,詳見ProductionSimulation.java……5 while(productCount<targetCount){6 //模擬生產(chǎn)一個產(chǎn)品的時間和資源消耗

7 System.out.println("生產(chǎn)第"+(productCount+1)+"個產(chǎn)品");8 productCount++;9 //假設(shè)每生產(chǎn)一個產(chǎn)品,我們需要檢查庫存和機器狀態(tài)

10 //這里簡單地用延時模擬檢查過程

11 try{12 Thread.sleep(1000);//模擬檢查過程,休眠1秒鐘

13 }catch(InterruptedExceptione){14 e.printStackTrace();15 }……任務3-3神奇的自動販賣機-

循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)-while循環(huán)結(jié)構(gòu)在while循環(huán)中判斷當前計數(shù)是否小于生產(chǎn)最大閾值,如果成立則生產(chǎn)“一個產(chǎn)品”,并等待1秒鐘后繼續(xù)執(zhí)行生產(chǎn),直到與生產(chǎn)最大閾值相等,則停止生產(chǎn)并提示“工位矯正操作”,其運行結(jié)果如圖循環(huán)結(jié)構(gòu)-for循環(huán)結(jié)構(gòu)for循環(huán)結(jié)構(gòu)是最常用的循環(huán)結(jié)構(gòu)語句,一般用在循環(huán)次數(shù)已知的情況下,通常情況下可以代替while循環(huán),基本語法格式如下:for(初始化表達式;循環(huán)條件;操作表達式){

執(zhí)行語句 …… }在for循環(huán)語句中,程序會首先執(zhí)行一次初始化表達式,然后進行循環(huán)條件判斷,如果循環(huán)條件結(jié)果為true,就會執(zhí)行循環(huán)體,最后再執(zhí)行操作表達式來控制循環(huán)條件,這樣就完成了一輪for循環(huán),直到循環(huán)條件結(jié)果為false時,才會跳出整個for循環(huán)。任務3-3神奇的自動販賣機-

循環(huán)結(jié)構(gòu)for循環(huán)結(jié)構(gòu)的具體用法如例3-7“逢7過”的案例演示,當用戶輸入的數(shù)字是包含7或者是7的倍數(shù)時,在控制輸出“過”,否則輸出當前數(shù)字……13 for(i=x;i<=100;i++){14 //個、十為都不能含有7或7的倍數(shù)

15 if(i%10==7||i/10%10==7||i%7==0){16 System.out.println("過");17 }else{18 System.out.println(i);19 }20 }……循環(huán)結(jié)構(gòu)-for循環(huán)結(jié)構(gòu)上述代碼中,使用while循環(huán)判斷用戶輸入的數(shù)字是否在1-100之間,使用for語句控制循環(huán)體,使用if語句檢查當前輸入的數(shù)字在位于個位、十位、的數(shù)字是否為7或是7的倍數(shù)其運行當用戶輸入96時,其運行結(jié)果如圖任務3-3神奇的自動販賣機-

循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)-foreach循環(huán)語句Foreach循環(huán)(也稱為增強型for循環(huán))是一種方便的循環(huán)結(jié)構(gòu),可無需使用傳統(tǒng)的索引變量遍歷數(shù)組、枚舉類型或?qū)崿F(xiàn)Iterable接口的集合對象?;菊Z法格式如下:for(數(shù)據(jù)類型變量名:數(shù)組或集合){ //循環(huán)體,使用變量名訪問當前遍歷到的元素}任務3-3神奇的自動販賣機-

循環(huán)結(jié)構(gòu)任務3-3神奇的自動販賣機-

循環(huán)結(jié)構(gòu)嵌套循環(huán)是指在一個循環(huán)語句的循環(huán)體中再定義一個循環(huán)語句的語法結(jié)構(gòu),形成多層循環(huán)。順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)3種結(jié)構(gòu)的語句組可以包含任意結(jié)構(gòu)的語句,從而形成不同的結(jié)構(gòu),以解決不同的問題。while、do…while、for循環(huán)語句都可以進行循環(huán)嵌套,并且它們之間也可以互相嵌套,循環(huán)嵌套結(jié)構(gòu)沒有固定的語法格式,通過分析具體問題自然形成。在實際開發(fā)時,我們最常用的是for循環(huán)嵌套,基本語法格式如下:for(inti=0;i<args.length;i++){ for(intj=0;j<args.length;j++){ …… }}循環(huán)結(jié)構(gòu)-循環(huán)嵌套任務3-3神奇的自動販賣機-

循環(huán)結(jié)構(gòu)for循環(huán)結(jié)構(gòu)的具體用法如例3-8打印9*9乘法表的案例,詳見TriangleMultiplicationTable.java……6 for(introw=1;row<=9;row++){7 //控制列數(shù)

8 for(intcolumn=1;column<=row;column++){9 //輸出算式,并用制表符控制上下對齊

10 System.out.print(column+"*"+row+"="+column*row+"\t");11 }12 //每輸出一行之后進行換行

13 System.out.println();14 }……上述代碼中,使用外層循環(huán)控制乘法表的行數(shù),使用循環(huán)變量i作為乘法表的一個乘數(shù);內(nèi)層循環(huán)控制列數(shù),使用循環(huán)變量j作為乘法表的第二個乘數(shù),并在內(nèi)層循環(huán)中完成算式的拼接工作,使用print()函數(shù)和制表符結(jié)合打印每行的結(jié)果,直至乘法表打印結(jié)束,其運行結(jié)果如圖循環(huán)結(jié)構(gòu)-循環(huán)嵌套任務3-3神奇的自動販賣機-

循環(huán)結(jié)構(gòu)break語句主要介紹for循環(huán)語句中的break語句使用方法。在循環(huán)語句中,break語句的功能是跳出循環(huán)體。特別需要說明的是,當break語句位于多重循環(huán)語句的內(nèi)層時,break語句只能跳出它當前所處的那層循環(huán)體,for循環(huán)結(jié)構(gòu)break語句的具體用法,如例3-9所示當循環(huán)控制值等于4時,則結(jié)束循環(huán)。詳見BreakDemo.java循環(huán)結(jié)構(gòu)-跳轉(zhuǎn)語句-break語句……4 for(inti=0;i<10;i++){5 if(i<=4){6 break;7 }8 System.out.println("當前是循環(huán)值為:"+i);9}……以上代碼中,循環(huán)控制值從0開始循環(huán),當不等于4時,執(zhí)行打印語句,當循環(huán)控制值等于4時,執(zhí)行break結(jié)束循環(huán),其運行結(jié)果任務3-3神奇的自動販賣機-

循環(huán)結(jié)構(gòu)continue語句用于跳過當前循環(huán)的剩余部分,并開始下一次迭代。continue語句的具體用法,如例3-10當內(nèi)外循環(huán)控制值都等于3時,則跳過外層循環(huán)的當前循環(huán),詳見ContinueDemo.Java循環(huán)結(jié)構(gòu)-跳轉(zhuǎn)語句-continue語句……4 for(inti=0;i<5;i++){5 for(intj=0;j<5;j++){6 if(i==3&&j==3){7 continue;//跳過外層循環(huán)的當前迭代

8 }9 System.out.print("("+i+","+j+")");10 }11 System.out.println();12 }……在for或while語句中,如果遇到continue語句,當前循環(huán)的剩余部分將不會被執(zhí)行,并且會立即開始下一次循環(huán)迭代。上述代碼中,當內(nèi)外循環(huán)控制值都等于3時,則跳出當前的內(nèi)循環(huán),其運行結(jié)果如圖任務3-3神奇的自動販賣機-

循環(huán)結(jié)構(gòu)return語句用于從方法中退出,并可返回一個值。在循環(huán)中使用return可以提前結(jié)束循環(huán)執(zhí)行。如例3-11通過判斷for循環(huán)中,當循環(huán)控制等于3時,則結(jié)束當前循環(huán)的案例演示return語句的具體用法,詳見ReturnDemo.java循環(huán)結(jié)構(gòu)-跳轉(zhuǎn)語句-return語句……3for(inti=0;i<6;i++){4 if(i==3){5 return;6 }7 System.out.println("return后的輸出語句,i值為:"+i);8}……以上代碼中,當i值小于且不等于3時,執(zhí)行打印語句,當i值等于3時則跳出循環(huán),其運行結(jié)果如圖任務3-3神奇的自動販賣機-

循環(huán)結(jié)構(gòu)標簽循環(huán)跳轉(zhuǎn)是一種高級的編程技術(shù),它允許程序員在循環(huán)中使用標簽(labels)來標記循環(huán)的開始和結(jié)束,并通過break或continue語句來控制循環(huán)的執(zhí)行。標簽循環(huán)跳轉(zhuǎn)通常與嵌套循環(huán)一起使用,以便在滿足特定條件時直接跳轉(zhuǎn)到循環(huán)的頂層或特定位置。循環(huán)結(jié)構(gòu)-跳轉(zhuǎn)語句-標簽循環(huán)跳轉(zhuǎn)任務3-3神奇的自動販賣機-

循環(huán)結(jié)構(gòu)使用標簽的break語句使用標簽的break語句可以用來跳出指定的循環(huán)。當break語句后面跟有一個標簽時,它將退出由該標簽標記的循環(huán)。如果沒有標簽,它將退出當前最內(nèi)層的循環(huán)循環(huán)結(jié)構(gòu)-跳轉(zhuǎn)語句-標簽循環(huán)跳轉(zhuǎn)……outerLoop:for(inti=0;i<10;i++){innerLoop:for(intj=0;j<10;j++){if(i==5&&j==5){breakinnerLoop;//跳出內(nèi)層循環(huán)

}System.out.println("i:"+i+",j:"+j);}if(i==5){breakouterLoop;//跳出外層循環(huán)

}}……任務3-3神奇的自動販賣機-

循環(huán)結(jié)構(gòu)使用標簽的continue語句使用標簽的continue語句可以用來跳過指定的循環(huán)的剩余部分,并直接進入下一次迭代。當continue語句后面跟有一個標簽時,它將跳過由該標簽標記的循環(huán)的剩余部分。如果沒有標簽,它將跳過當前最內(nèi)層的循環(huán)的剩余部分,并進入下一次迭代循環(huán)結(jié)構(gòu)-跳轉(zhuǎn)語句-標簽循環(huán)跳轉(zhuǎn)……outerLoop:for(inti=0;i<10;i++){innerLoop:for(intj=0;j<10;j++){if(i==5&&j==5){

continueinnerLoop;//跳過內(nèi)層循環(huán)的剩余部分

}System.out.println("i:"+i+",j:"+j);}if(i==5){

continueouterLoop;//跳過外層循環(huán)的剩余部分

}}……任務3-3神奇的自動販賣機-

循環(huán)結(jié)構(gòu)標簽語句的具體用法,如例3-12實現(xiàn)一個購物車主菜單的程序,詳見MainMenu.Java循環(huán)結(jié)構(gòu)-跳轉(zhuǎn)語句-標簽循環(huán)跳轉(zhuǎn)……6 mainMenu://主菜單循環(huán)的標簽

7 while(running){8 System.out.println("請選擇一個選項:");9 System.out.println("1.查看商品");10 System.out.println("2.結(jié)算");11 System.out.println("3.退出");12 intchoice=scanner.nextInt();13 switch(choice){14 case1:15 System.out.println("查看商品...");16 break;17 case2:18 System.out.println("結(jié)算...");19 break;20 case3:21 System.out.println("退出程序。");22 running=false;//設(shè)置運行狀態(tài)為false,退出主循環(huán)

23 breakmainMenu;//跳出主菜單循環(huán)

24 default:25 System.out.println("無效選項,請重新選擇。");26 }27 }……任務3-3神奇的自動販賣機-

循環(huán)結(jié)構(gòu)以上代碼中,只要用戶不選擇輸入退出,程序會一直運行,直到用戶輸入“3”執(zhí)行breakmainMenu標簽跳轉(zhuǎn),結(jié)束當前循環(huán),其運行結(jié)果循環(huán)結(jié)構(gòu)-跳轉(zhuǎn)語句-標簽循環(huán)跳轉(zhuǎn)1.使用double和int數(shù)據(jù)類型變量存儲用戶初始儲值金額、商品庫存初始數(shù)量2.使用while設(shè)計程序主菜單,保持程序持續(xù)運行。3.使用switch處理用戶菜單選擇,使用switch嵌套處理用戶購買商品4.處理購買,檢查用戶儲值余額根據(jù)執(zhí)行充值或購買操作;設(shè)計購買邏輯,包括商品庫存動態(tài)、用戶余額動態(tài)檢查5.顯示商品,動態(tài)顯示當前各類商品的庫存數(shù)量。代碼參考教材中的VendingMachine.java程序運行結(jié)果如下圖任務3-3神奇的自動販賣機-任務實現(xiàn)04任務3-4購買餐飲罐裝燃氣方法的定義變量作為實參使用方法的重載方法遞歸調(diào)用數(shù)組數(shù)組的常見操作任務3-4購買餐飲罐裝燃氣-方法與數(shù)組方法與數(shù)組-方法的定義方法(又稱函數(shù))本是特定功能的一段通用代碼塊。在程序設(shè)計過程中方法能有效提高程序的復用性和可讀性。方法不調(diào)用不執(zhí)行,方法之間不能互相嵌套,并且方法的執(zhí)行順序只和調(diào)用順序有關(guān)。Java中,方法就像是一個功能模塊,它將一系列代碼組織起來,用于完成特定的任務。我們可以將方法看作是程序中的“小工具”,它們可以被重復調(diào)用,從而避免代碼冗余,提高代碼的可讀性和可維護性。方法的基本語法格式:訪問權(quán)限修飾符[其他的修飾符]返回值類型方法名(參數(shù)類型1參數(shù)名1,參數(shù)類型2參數(shù)名2,...){//形參列表//方法體執(zhí)行語句 return返回值;}任務3-4購買餐飲罐裝燃氣-方法與數(shù)組方法與數(shù)組-方法的定義方法的語法格式說明:修飾符:方法的修飾符比較多,有對訪問權(quán)限進行限定的public、private、protected,有靜態(tài)修飾符static,最終修飾符final等。返回值類型:該方法最終返回的結(jié)果的數(shù)據(jù)類型,方法的返回值必須為方法聲明的返回值類型,如果方法中沒有返回值,返回值類型要聲明為void,此時,方法中return語句可以省略。方法名:見名知意,首字母小寫,遵守駝峰命名法。方便我們的調(diào)用。參數(shù)類型:用于限定調(diào)用方法時傳入?yún)?shù)的數(shù)據(jù)類型。參數(shù)名:是一個變量,用于接收調(diào)用方法時傳入的數(shù)據(jù)。參數(shù)列表:用于描述方法在被調(diào)用時需要接收的參數(shù),如果方法不需要接收任何參數(shù),則參數(shù)列表為空,即()內(nèi)不寫任何內(nèi)容方法體語句:就是完成功能的代碼return:用于結(jié)束方法以及返回方法指定類型的值返回值:被return語句返回的值,該值會返回給調(diào)用者rurn說明:若當前方法無返回值類型,即返回值類型是void,那么當前方法中可以不寫return語句。return返回值時,執(zhí)行一次只能返回一個值,不可以同時返回多個值。一個方法中可以運用諸如判斷語句設(shè)計多個return語句,但只有唯一return被執(zhí)行。任務3-4購買餐飲罐裝燃氣-方法與數(shù)組方法與數(shù)組-方法的定義如例3-13,判斷數(shù)字奇偶性的案例演示方法的具體用法。用戶通過鍵盤錄入一個整數(shù),將整數(shù)傳遞到另外一個方法中,在此方法中判斷這個整數(shù)的奇偶性,如果是偶數(shù),方法返回“偶數(shù)”,否則返回“奇數(shù)”,詳見MainMethod.java……13 publicstaticStringcheckEvenOrOdd(intnumber){14 if(number%2==0){15 return"偶數(shù)";16 }else{17 return"奇數(shù)";18 }19 }……上述代碼中,checkEvenOrOdd(intnumber)利用對輸入的數(shù)字取余的運算實現(xiàn)判斷數(shù)字奇偶,并將執(zhí)行結(jié)果返回至調(diào)用者,其運行結(jié)果如圖任務3-4購買餐飲罐裝燃氣-方法與數(shù)組方法與數(shù)組-變量作為實參使用在Java中,大多數(shù)情況下,方法參數(shù)采用值傳遞。這意味著方法接收的是變量的值,而不是變量本身。當調(diào)用方法時,將變量作為實參傳遞給方法。這個過程稱為參數(shù)傳遞。在方法內(nèi)部,可以使用這些實參來執(zhí)行操作。但是方法內(nèi)部對參數(shù)的修改不會影響原始變量。如例3-14變量作為實參,比較兩個整數(shù)的大小,如果第一個比第二個大,返回true,否則返回false。詳見ChangeValue.java……8 publicstaticvoidchangeValue(intnum){9 System.out.println("函數(shù)中接收的num值是:"+num);10 num=20;11 System.out.println("函數(shù)中對num賦值后:"+num);12 return;13 }……在上述代碼中,主函數(shù)定義intnum=10,并在調(diào)用changeValue(intnum)函數(shù)時傳遞num的參數(shù)值,changeValue()函數(shù)在執(zhí)行時首先打印接收到的參數(shù)值,然后對num重新賦值結(jié)束函數(shù)執(zhí)行此語句不影響main方法中的num變量值,其運行結(jié)果如圖任務3-4購買餐飲罐裝燃氣-方法與數(shù)組方法與數(shù)組-方法的重載方法的重載是指在同一個類中定義多個同名方法,但它們的參數(shù)列表不同。重載的方法可以有不同的參數(shù)類型、參數(shù)數(shù)量或參數(shù)順序。編譯器會根據(jù)傳遞的參數(shù)自動選擇合適的方法進行調(diào)用。如例3-15實現(xiàn)計算器加法運算的案例演示方法重載,所示詳見Calculator.java……

2//方法重載示例:計算兩個整數(shù)的和

3publicintadd(inta,intb){4returna+b;5}6//方法重載示例:計算兩個浮點數(shù)的和

7publicdoubleadd(doublea,doubleb){8returna+b;9}……上述代碼中,定義了兩個add()函數(shù),但兩者參數(shù)個數(shù)一樣但是類型不一樣,在主函數(shù)中,根據(jù)傳遞給方法的參數(shù)個數(shù)和類型來調(diào)用相應的方法,其運行結(jié)果如圖任務3-4購買餐飲罐裝燃氣-方法與數(shù)組方法與數(shù)組-方法遞歸調(diào)用在一個函數(shù)、過程、方法或者數(shù)據(jù)結(jié)構(gòu)的定義中,直接或間接出現(xiàn)定義本身的應用,則稱它們遞歸。這種調(diào)用方式可以簡化復雜問題的解決過程。在Java中,方法遞歸調(diào)用通常涉及到一個遞歸終止條件和一個遞歸調(diào)用自身的方法。如例3-16,通過實現(xiàn)整數(shù)1至5的階乘,演示方法遞歸的具體用法,詳見Factorial.java1publicclassFactorial{2//遞歸終止條件

3publicstaticintfactorial(intn){4if(n==0){5return1;6}7//遞歸調(diào)用

8returnn*factorial(n-1);9}10publicstaticvoidmain(String[]args){11intnumber=5;12intresult=factorial(number);13System.out.println("5的階乘是:"+result);14}15}任務3-4購買餐飲罐裝燃氣-方法與數(shù)組方法與數(shù)組-方法遞歸調(diào)用上述代碼中,使用遞歸機制計算factorial(5)的執(zhí)行過程:factorial(5)→5*factorial(4)→4*factorial(3)→3*factorial(2)→2*factorial(1)→factorial(1),其運行結(jié)果任務3-4購買餐飲罐裝燃氣-方法與數(shù)組方法與數(shù)組-數(shù)組數(shù)組(array)是一種用一個名字來標識一組有序且類型相同的數(shù)據(jù)組成的派生數(shù)據(jù)類型,它占有一片連續(xù)的內(nèi)存空間。數(shù)據(jù)中的每個元素都有如下特征:所有元素類型相同。每個元素在數(shù)組中有一個位置,即該元素在數(shù)組中的順序關(guān)系。Java數(shù)組元素的位置用括在方括號中的序號表示。這個序號也稱下標。下標都是以0為起始計算。表示位置所需的下標個數(shù)稱為數(shù)組的維數(shù)。任務3-4購買餐飲罐裝燃氣-方法與數(shù)組方法與數(shù)組-一維數(shù)組一維數(shù)組,可以理解為只能存放一行相同數(shù)據(jù)類型的數(shù)據(jù)。在Java中如果要使用數(shù)組,需要先聲明數(shù)組,然后再分配數(shù)組內(nèi)存。在Java中,可以使用以下格式來定義一個數(shù)組:

數(shù)據(jù)類型數(shù)組名[];

或者

數(shù)據(jù)類型[]數(shù)組名;上述示例中分別用兩種不同的語法格式聲明數(shù)組,其中“[]”它是一維數(shù)組的標識,可放置在數(shù)組名前面也可以放在數(shù)組名后面,面向?qū)ο蟾鼈?cè)重放在前面,保留放在后面是為了迎合C程序員,在這里推薦使用第一種任務3-4購買餐飲罐裝燃氣-方法與數(shù)組方法與數(shù)組-一維數(shù)組int[]x; //聲明一個int[]類型的變量x=newint[100]; //為數(shù)組x分配100個元素空間上述代碼,表示在內(nèi)存中定義了100個int類型的變量第一個變量的名稱為x[0]第二個變量的名稱為x[1]以此類推,第100個變量的名稱為x[99],這些變量的初始值都是0任務3-4購買餐飲罐裝燃氣-方法與數(shù)組方法與數(shù)組-一維數(shù)組數(shù)組中元素會被自動賦予一個默認值,根據(jù)元素類型的不同,默認初始化的值也是不一樣的。具體如表成員變量類型初始值成員變量類型初始值byte0double0.0Dshort0char空字符,’\u0000’int0booleanfalselong0L引用數(shù)據(jù)類型nullfloat0.0F

任務3-4購買餐飲罐裝燃氣-方法與數(shù)組方法與數(shù)組-一維數(shù)組在Java中,因為數(shù)組是引用類型,使用數(shù)組之前都會對其進行初始化,聲明數(shù)組只是聲明一個引用類型的變量,并不是數(shù)組對象本身,只要讓數(shù)組變量指向有效的數(shù)組對象,程序中就可使用該數(shù)組變量來訪問數(shù)組元素。靜態(tài)初始化是指在初始化數(shù)組時為數(shù)組每個元素賦值,由系統(tǒng)決定數(shù)組的長度。數(shù)組的靜態(tài)初始化有2種方式,具體示例如下:array=newint[]{1,2,3,4,5}; //靜態(tài)初始化動態(tài)初始化是指由程序員在初始化數(shù)組時指定數(shù)組的長度,由系統(tǒng)為數(shù)組元素分配初始值。數(shù)組動態(tài)初始化,具體示例如下:int[]array=newint[10]; //動態(tài)初始化任務3-4購買餐飲罐裝燃氣-方法與數(shù)組方法與數(shù)組-二維數(shù)組二維數(shù)組是一維數(shù)組的擴展,可以把二維數(shù)組看作特殊的一維數(shù)組,其每一個元素是一個一維數(shù)組。一維數(shù)組和二維數(shù)組使用較多,二維數(shù)組定義格式如下。數(shù)組元素類型[][]數(shù)組名=new數(shù)組元素類型[長度1][長度2];二維數(shù)組的靜態(tài)初始化規(guī)則:二維數(shù)組初始化時,行數(shù)一定要有,列數(shù)可有可沒有;二維數(shù)組初始化,一定要二次初始化,否則會空指針異常任務3-4購買餐飲罐裝燃氣-方法與數(shù)組方法與數(shù)組-二維數(shù)組二維數(shù)組是一維數(shù)組的擴展,可以把二維數(shù)組看作特殊的一維數(shù)組,其每一個元素是一個一維數(shù)組。一維數(shù)組和二維數(shù)組使用較多,二維數(shù)組定義格式如下。數(shù)組元素類型[][]數(shù)組名=new數(shù)組元素類型[長度1][長度2];二維數(shù)組的靜態(tài)初始化規(guī)則:二維數(shù)組初始化時,行數(shù)一定要有,列數(shù)可有可沒有;二維數(shù)組初始化,一定要二次初始化,否則會空指針異常靜態(tài)初始化:初始化時由程序員顯示指定每個數(shù)組元素的初始值,由系統(tǒng)決定數(shù)組長度int[][]arr=newint[][]{{3,8,2},{2,7},{9,0,1,6}};動態(tài)初始化:初始化時程序員只指定數(shù)組長度,由系統(tǒng)為數(shù)組元素分配初始值。

int[][]arr=newint[3][];int[][]arr=newint[3][2];任務3-4購買餐飲罐裝燃氣-方法與數(shù)組方法與數(shù)組-二維數(shù)組//二維數(shù)組的聲明,一下三種形式均可Int[][]intArray;float[]floatArray[];Double[]doubleArray[];//這種方式也可以//創(chuàng)建一個數(shù)組(二維數(shù)組也有默認值)intArray=newint[3][3];//第一個’[]'中填寫行數(shù),第二個’[]'中填寫列數(shù)//給二維數(shù)組的元素賦值intArray[1][2]=9;//聲明數(shù)組的同時進行創(chuàng)建char[][]ch=newchar[3][5];//創(chuàng)建數(shù)組的同時,只指定行數(shù)。newfloat[][];和newfloat[][3];這兩種寫法錯誤floatArray=newfloat[3][];//此時,若取floatArray[2][1],會報空指針異常。/***一個行數(shù)為3的二維數(shù)組可以認為由3個一維數(shù)組組成,對于floatArray[2][1],其floatArray[2]可以代表該二維*數(shù)組的第三個一維數(shù)組,因為其三個一維數(shù)組均未被初始化,所以上面會報空指針異常。*解決方案如下:*/floatArray[0]=newfloat[3];//第一行有3列floatArray[1]=newfloat[4];//第二行有4列floatArray[2]=newfloat[5];//第三行有5列//此時,二維數(shù)組中的每一個元素都已經(jīng)被默認初始化了,再進行floatArray[2][1]便不會有空指針異常了任務3-4購買餐飲罐裝燃氣-方法與數(shù)組如例3-17,楊輝三角是個二維圖形,可以視為一個無限大的二維數(shù)組,其中每個數(shù)字都是它上方兩個數(shù)字的和,用二維數(shù)組很容易解決楊輝三角問題。詳見YangHuiTriangle.java……4introws=5;//定義楊輝三角形的行數(shù)

5int[][]yangHui=newint[rows][];7//初始化楊輝三角形的每一行

8for(inti=0;i<rows;i++){9yangHui[i]=newint[i+1];10//每一行的第一個和最后一個數(shù)字都是111yangHui[i][0]=yangHui[i][i]=1;12}13//計算楊輝三角形的其余數(shù)字

14for(inti=2;i<rows;i++){15for(intj=1;j<i;j++){16yangHui[i][j]=yangHui[i-1][j-1]+yangHui[i-1][j];17}18}……方法與數(shù)組-二維數(shù)組任務3-4購買餐飲罐裝燃氣-方法與數(shù)組在上述代碼中,int[rows][]定義的二維數(shù)組,表示該二位數(shù)組的第一維數(shù)組的大小是rows,第二維數(shù)組的大小是可變的,可以有不同數(shù)量的元素。根據(jù)楊輝三角形特性,利用for循環(huán)為前兩行和后面的各行填充元素,最后再次使用for循環(huán)遍歷數(shù)組元素并打印,其運行結(jié)果如圖方法與數(shù)組-二維數(shù)組任務3-4購買餐飲罐裝燃氣-方法與數(shù)組數(shù)組遍歷在操作數(shù)組時,經(jīng)常需要依次訪問數(shù)組中的每個元素,這種操作稱作數(shù)組的遍歷。接下來通過一個案例來學習使用foreach循環(huán)結(jié)構(gòu)遍歷數(shù)組,如例3-18ArrayTraversalExample.java方法與數(shù)組-數(shù)組的常見操作1 publicclassArrayTraversalExample{2 publicstaticvoidmain(String[]args){3 //定義一個數(shù)組,并初始化一些數(shù)據(jù)

4 int[]numbers={2,5,6,7,0};5 //使用foreach循環(huán)結(jié)構(gòu)遍歷數(shù)組

6 for(intnumber:numbers){7 //選擇結(jié)構(gòu),根據(jù)數(shù)組中的元素進行不同的操作

8 if(number%2==0){9 System.out.println("偶數(shù):"+number);10 }else{11 System.out.println("奇數(shù):"+number);12 }13 }14 }

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論