版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
項(xiàng)目七異常捕獲【項(xiàng)目描述】實(shí)現(xiàn)一個(gè)2元計(jì)算器,通過(guò)命令行選擇功能,要求實(shí)現(xiàn)功能如下:1、除法計(jì)算工具,通過(guò)在客戶端輸入2元計(jì)算式,由程序給出結(jié)果。2、將10進(jìn)制數(shù)轉(zhuǎn)換成2進(jìn)制或者8進(jìn)制數(shù)。3、通過(guò)輸入半徑計(jì)算圓的面積和體積。【任務(wù)分解】一個(gè)很簡(jiǎn)單的項(xiàng)目,不是嗎?相信很多同學(xué)已經(jīng)開(kāi)始自己構(gòu)造該程序了,任務(wù)分解當(dāng)然也很簡(jiǎn)單:先實(shí)現(xiàn)計(jì)算器的主體方法,接著實(shí)現(xiàn)除法計(jì)算工具、實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換工具,最后實(shí)現(xiàn)圓的計(jì)算工具。我們可通過(guò)以下4個(gè)任務(wù)來(lái)到達(dá)實(shí)現(xiàn)本項(xiàng)目的目的:1.除法計(jì)算工具—異常捕獲及處理。2.進(jìn)制轉(zhuǎn)換工具--異常拋出。3.進(jìn)制轉(zhuǎn)換工具--聲明異常。4.圓的計(jì)算工具—自定義異常。//計(jì)算器的主體方法:Calculator.javapackageedu.gdkm.cal;importjava.util.Scanner;publicclassCalculator{ publicstaticvoidmain(String[]args){ Scannerscanner=newScanner(System.in); Scannerin=newScanner(System.in); while(true){ System.out.println("請(qǐng)選擇你需要計(jì)算的功能:"); System.out.println("0.退出"); System.out.println("1.除法計(jì)算"); System.out.println("2.進(jìn)制換算"); System.out.println("3.圓計(jì)算"); System.out.print("你選擇的功能是:");
intnum=in.nextInt(); if(num==0){ System.out.println("謝謝使用,再見(jiàn)!"); System.exit(0); } if(num==1){ System.out.println("請(qǐng)使用‘a(chǎn)/b’的形式輸入計(jì)算式"); Stringstr=scanner.nextLine(); intk=str.indexOf('/'); if(k>0){ Stringa=str.substring(0,k); Stringb=str.substring(k+1); Division.d(a,b); } }
本代碼是實(shí)現(xiàn)計(jì)算器的主體方法,在主方法main()中,用戶可循環(huán)選擇要進(jìn)行的功能:"0.退出"、"1.除法計(jì)算"、"2.進(jìn)制換算"、"3.圓計(jì)算"。根據(jù)用戶選擇的數(shù)字來(lái)決定要調(diào)用不同的方法:Division.d(a,b、Conversion.conversion(a,b)和Cpute(r),這幾個(gè)類和方法尚未實(shí)現(xiàn),要在下面的任務(wù)中逐個(gè)實(shí)現(xiàn)。其中需要定義Division類的靜態(tài)方法d(a,b),用于實(shí)現(xiàn)除法計(jì)算;定義Conversion類的靜態(tài)方法conversion(a,b),用于實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換;定義Circle類的compute(r,b)方法,用于實(shí)現(xiàn)圓的計(jì)算,接下來(lái)我們來(lái)看一下這三個(gè)類如何實(shí)現(xiàn)。【任務(wù)描述】
實(shí)現(xiàn)一個(gè)Division類的靜態(tài)方法d(a,b),用于實(shí)現(xiàn)除法計(jì)算。相信大家都信心滿滿的開(kāi)始干活了,實(shí)現(xiàn)代碼如下:任務(wù)一除法計(jì)算工具—異常捕獲及處理[必備知識(shí)】
1.異常的概念
在Java語(yǔ)言中,異常(Exception)又稱為例外,是指在程序運(yùn)行過(guò)程中發(fā)生的非正常事件,這些事件的發(fā)生會(huì)影響程序的正常執(zhí)行,出現(xiàn)異常是相關(guān)處理則成為異常處理。
Java定義了異常類的層次結(jié)構(gòu),從Trowable開(kāi)始,Error和Exception則繼承于它,而RuntimeException則繼承了Exception。2.異常處理的語(yǔ)法格式
try{
程序代碼1
}catch(異常類1變量名1){
程序代碼2
}catch(異常類2變量名2){
程序代碼3
}finally{
程序代碼4
}【解題思路】1.定義一個(gè)Division類,設(shè)計(jì)方法d(Stringa,Stringb)。2.實(shí)現(xiàn)方法d(Stringa,Stringb)時(shí),為避免非法輸入導(dǎo)致的錯(cuò)誤,在實(shí)現(xiàn)除法的部分要使用try-catch語(yǔ)句捕獲并處理NumberFormatException?!救蝿?wù)透析】
packageedu.gdkm.cal;
publicclassDivision{
publicstaticvoidd(Stringa,Stringb){
try{
intx=Integer.parseInt(a);
inty=Integer.parseInt(b);
System.out.println(x/y);
}catch(NumberFormatExceptione){
System.out.println("請(qǐng)輸入數(shù)字!");
}
}
} 運(yùn)行結(jié)果如下:
圖7.4增加異常處理后遇非法輸入時(shí)的處理情況【課堂提問(wèn)】★引起異常產(chǎn)生的條件是什么?★試列出5種常見(jiàn)的異常?★異常沒(méi)有被捕獲會(huì)發(fā)生什么?【現(xiàn)場(chǎng)演練】嘗試在該除法運(yùn)算中捕獲除數(shù)不能為零異常。任務(wù)二進(jìn)制轉(zhuǎn)換工具--異常拋出【任務(wù)描述】實(shí)現(xiàn)Conversion類的靜態(tài)方法conversion(a,b),用于實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換,在處理進(jìn)制轉(zhuǎn)換基數(shù)時(shí),使用異常拋出機(jī)制?!颈貍渲R(shí)】1.什么叫拋出異常當(dāng)程序運(yùn)行時(shí),如果發(fā)現(xiàn)異常情況,可以按上文所述進(jìn)行捕獲和處理,也可以通過(guò)生成對(duì)應(yīng)異常對(duì)象,并將該異常對(duì)象傳遞給Java運(yùn)行時(shí)系統(tǒng),使系統(tǒng)中包含該異常信息,這樣的過(guò)程稱為拋出異常。在Java中,用關(guān)鍵字throw來(lái)拋出一個(gè)異常。2.拋出異常的語(yǔ)法格式[格式7-1拋出異常的語(yǔ)法格式]throw異常對(duì)象;例如: thrownewNullPointerException();當(dāng)系統(tǒng)執(zhí)行到該throw代碼時(shí),將終止當(dāng)前方法的執(zhí)行,直接返回到調(diào)用該方法的位置,所以在該方法下面不能直接書(shū)寫(xiě)其他代碼,因?yàn)檫@些代碼將永遠(yuǎn)無(wú)法執(zhí)行到?!窘忸}思路】 1.定義一個(gè)Conversion類,設(shè)計(jì)方法conversion(Stringa,Stringb)。2.實(shí)現(xiàn)方法conversion(Stringa,Stringb),在處理進(jìn)制轉(zhuǎn)換基數(shù)時(shí),要使用異常拋出機(jī)制?!救蝿?wù)透析】
packageedu.gdkm.cal;publicclassConversion{ publicstaticvoidconversion(Stringa,Stringb){ try{ intx=Integer.parseInt(a); inty=Integer.parseInt(b); if(y!=2&&y!=8){ thrownewIllegalArgumentException("進(jìn)制參數(shù)非法!"); } StringBuffers=newStringBuffer(); inttemp;
【任務(wù)透析】
while(x!=0){ temp=x%y; //取余數(shù) s.insert(0,temp); //添加到字符串緩存區(qū) x/=y; //去掉余數(shù) } System.out.println(s.toString()); }catch(NumberFormatExceptione){ System.out.println("請(qǐng)輸入數(shù)字!"); } }} 通過(guò)拋出異常的做法,使得該方法的邏輯更加嚴(yán)謹(jǐn),在出現(xiàn)異常的情況下,將這個(gè)異常報(bào)告出來(lái),使得該方法不會(huì)出現(xiàn)錯(cuò)誤的結(jié)果,同時(shí)提醒其他的結(jié)構(gòu)進(jìn)行處理。【課堂提問(wèn)】★拋出異常會(huì)引起程序出現(xiàn)什么情況?★為什么需要拋出異常?【現(xiàn)場(chǎng)演練】 嘗試拋出被轉(zhuǎn)換的數(shù)字不是自然數(shù)的異常。任務(wù)三進(jìn)制轉(zhuǎn)換工具--聲明異常【任務(wù)描述】
實(shí)現(xiàn)Conversion類的靜態(tài)方法conversion(a,b),用于實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換。要求在定義conversion(a,b)方法時(shí),要用throws去聲明?!颈貍渲R(shí)】1.什么叫聲明異常在同樣的任務(wù)中,我們可以通過(guò)拋出異常來(lái)對(duì)運(yùn)行時(shí)的錯(cuò)誤進(jìn)行報(bào)告,從而提醒其他層面的程序?qū)υ摦惓_M(jìn)行處理,但有些時(shí)候,我們并不需要處理這些異常,或者不知道如何處理這些異常,這時(shí),它就向上傳遞,由調(diào)用它的方法處理這些異常,為了提醒調(diào)用該方法的程序員注意處理這些異常情況,需要在方法的聲明中將這些異常聲明出來(lái),這就是聲明異常。在Java中用關(guān)鍵字throws去聲明異常。2.聲明異常的語(yǔ)法格式聲明異常的語(yǔ)法格式為: throws異常類名例如: publicTest()throwsIllegaArgumentException需要注意的是:1、這些異常必須是該方法內(nèi)部可能拋出的異常。2、異常類名之間沒(méi)有順序。3、屬于RuntimeException子類的異??梢圆粫?shū)寫(xiě)在throws語(yǔ)句以后,但是另外一類異常如果可能拋出則必須聲明在throws語(yǔ)句之后?!窘忸}思路】1.定義一個(gè)Conversion類,設(shè)計(jì)方法conversion(Stringa,Stringb)。2.實(shí)現(xiàn)方法conversion(Stringa,Stringb)注意在處理進(jìn)制轉(zhuǎn)換基數(shù)時(shí),使用異常拋出機(jī)制,并聲明該異常?!救蝿?wù)透析】packageedu.gdkm.cal;publicclassConversion{ publicstaticvoidconversion(Stringa,Stringb)throwsIllegalArgumentException{ try{ intx=Integer.parseInt(a); inty=Integer.parseInt(b); if(y!=2&&y!=8){ thrownewIllegalArgumentException("進(jìn)制參數(shù)非法!"); } StringBuffers=newStringBuffer(); inttemp; while(x!=0){ temp=x%y; //取余數(shù)
s.insert(0,temp); //添加到字符串緩存區(qū) x/=y; //去掉余數(shù) } System.out.println(s.toString()); }catch(NumberFormatExceptione){ System.out.println("請(qǐng)輸入數(shù)字!"); } }} 【課堂提問(wèn)】★throw和throws關(guān)鍵字的區(qū)別是什么?★為什么需要聲明異常?★在任務(wù)代碼中,conversion(Stringa,Stringb)方法中的try-catch語(yǔ)句能否省掉?為什么?【現(xiàn)場(chǎng)演練】 嘗試聲明數(shù)字轉(zhuǎn)換異常NumberFormatException。任務(wù)四圓的計(jì)算工具—自定義異常常【任務(wù)描述】
實(shí)現(xiàn)Circle類的靜態(tài)方法compute(a,b),用于實(shí)現(xiàn)圓的面積和體積的計(jì)算?!颈貍渲R(shí)】1.自定義異常在JDK里面提供了幾百個(gè)異常類,但是這些異常所代表的還只是常見(jiàn)的異常情況,在實(shí)際使用時(shí),還是無(wú)法代表所以的異常情況,所以Java語(yǔ)言允許聲明自定義的異常類,使用這些自定義的異常類來(lái)代表實(shí)際項(xiàng)目中JDK沒(méi)有提供的異常情況。2.如何自定義異常自定義異常類在語(yǔ)法上要求直接或者間接繼承Exception,可以根據(jù)需要選擇繼承Exception或者RuntimeException類,這樣也設(shè)定了自定義異常類的類型,如果直接繼承Exception,則屬于必須處理的異常,如果繼承的是RuntimeException,則不強(qiáng)制必須被處理。【解題思路】1.定義一個(gè)Circle類,設(shè)計(jì)方法compute(Stringa,Stringb)。2.實(shí)現(xiàn)一個(gè)自定義異常用于處理圓半徑小于0的情況,在計(jì)算的過(guò)程中時(shí),使用異常捕獲機(jī)制,處理這個(gè)異常?!救蝿?wù)透析】packageedu.gdkm.cal;publicclassCircle{ publicstaticvoidcompute(Stringstr)throwsRadiusException{ try{ intr=
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年混凝土工程物流與運(yùn)輸服務(wù)合同
- 2025江蘇店鋪?zhàn)赓U版合同
- 2025年通遼貨運(yùn)從業(yè)資格仿真考題
- 2024年度北京教育培訓(xùn)合作協(xié)議2篇
- 2025主材采購(gòu)合同
- 融資租賃公司租賃合同
- 2024年商鋪?zhàn)赓U合同模板下載合同條款詳細(xì)說(shuō)明9篇
- 2024年度人力資源經(jīng)理試用期合同范本(企業(yè)創(chuàng)新)5篇
- 城市排水系統(tǒng)土石方施工協(xié)議
- 2024區(qū)網(wǎng)紅景點(diǎn)民宿租賃合同3篇
- 24秋國(guó)家開(kāi)放大學(xué)《企業(yè)信息管理》形考任務(wù)1-4參考答案
- 偏微分方程知到智慧樹(shù)章節(jié)測(cè)試課后答案2024年秋浙江師范大學(xué)
- 2024年共青團(tuán)入團(tuán)考試測(cè)試題庫(kù)及答案
- 2022年全國(guó)應(yīng)急普法知識(shí)競(jìng)賽試題庫(kù)大全-下(判斷題庫(kù)-共4部分-2)
- 花鍵計(jì)算公式DIN5480
- 《建筑與市政工程施工現(xiàn)場(chǎng)臨時(shí)用電安全技術(shù)標(biāo)準(zhǔn)》JGJT46-2024知識(shí)培訓(xùn)
- 2024年事業(yè)單位招聘考試公共基礎(chǔ)知識(shí)模擬試卷及答案(共七套)
- 《燃?xì)獍踩R(shí)培訓(xùn)》課件
- 高考及人生規(guī)劃講座模板
- 浙教版2023小學(xué)信息技術(shù)五年級(jí)上冊(cè) 第6課《順序結(jié)構(gòu)》說(shuō)課稿及反思
- 第20課《人民英雄永垂不朽》課件+2024-2025學(xué)年統(tǒng)編版語(yǔ)文八年級(jí)上冊(cè)
評(píng)論
0/150
提交評(píng)論