




已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
【任務(wù)2】用接口設(shè)計(jì)并實(shí)現(xiàn)面積與周長計(jì)算【要求】定義一個(gè)接口,其中包含一個(gè)計(jì)算面積的抽象方法和一個(gè)計(jì)算周長的抽象方法;輸入數(shù)據(jù)為圓的半徑、三角形的三條邊長、矩形的長和寬,對于用戶的輸入要有友好提示;程序能夠排除輸入過程中的非法數(shù)據(jù)(如:輸入的長度數(shù)據(jù)為負(fù)數(shù)或字符;輸入的三角形三條邊數(shù)據(jù)不能組成三角形;計(jì)算圓、三角形、矩形的面積和周長,并輸出原始數(shù)據(jù)和結(jié)算結(jié)果?!驹搶?shí)驗(yàn)屬于給定題目和要求,學(xué)生自己設(shè)計(jì)方案并加以實(shí)現(xiàn)的實(shí)驗(yàn),故屬于設(shè)計(jì)性實(shí)驗(yàn)?!俊驹搶?shí)驗(yàn)涉及到的知識(shí)點(diǎn)】輸入與輸出格式設(shè)計(jì);數(shù)據(jù)類型及其異常處理;循環(huán)及其嵌套;算法設(shè)計(jì);類;方法;接口;包。=第一次實(shí)驗(yàn):計(jì)算半徑為3的圓的周長,運(yùn)行效果見圖1。 圖1第二次實(shí)驗(yàn):計(jì)算邊長分別為3、4、5的三角形的面積和周長,運(yùn)行效果見圖2。圖2第三次實(shí)驗(yàn):計(jì)算邊長為7和8的矩形的面積,運(yùn)行效果見圖3。 圖3源程序如下:category包:Shape.java文件:/* * category為類的設(shè)計(jì)與構(gòu)造包 * 設(shè)計(jì)日期:2010年9月27日 */package category;public interface Shape/* * getArea()為計(jì)算面積的抽象方法 * getCircumference()為計(jì)算周長的抽象方法 */public abstract double getArea();/獲取面積public abstract double getCircumference();/獲取周長Circle.java文件:package category;/* * 圓類的設(shè)計(jì) * radius為圓的半徑 */public class Circle implements Shapeprivate double radius=0;public Circle(double r)radius=r;public double getRadius()return this.radius;public double getArea()return Math.PI*radius*radius;public double getCircumference()return 2*Math.PI*radius;Triangle.java文件:package category;/* * 三角形類的設(shè)計(jì) * a、b、c為三角形的三條邊 */public class Triangle implements Shapeprivate double a=0;private double b=0;private double c=0;public Triangle(double a,double b,double c)this.a=a;this.b=b;this.c=c;public double getA()return this.a;public double getB()return this.b;public double getC()return this.c;public double getArea()/* * 運(yùn)用海倫公式計(jì)算三角形的面積 */double p=(this.a+this.b+this.c)/2;return Math.sqrt(p*(p-this.a)*(p-this.b)*(p-this.c);public double getCircumference()return this.a+this.b+this.c;Rentangle.java文件:package category;/* * 矩形類的設(shè)計(jì) * length為矩形的長 * weight為矩形的寬 */public class Rentangle implements Shapeprivate double length=0;private double width=0;public Rentangle(double length,double width)this.length=length;this.width=width;public double getLength()return this.length;public double getWidth()return this.width;public double getArea()return this.length*this.width;public double getCircumference()return 2*(this.length+this.width);graphic包:Graphic_Calculation.java文件(main方法):/* * 用接口設(shè)計(jì)并實(shí)現(xiàn)面積與周長計(jì)算 * 程序編寫員:劉晨旭 * 編制日期:2010年9月26日 * 最后一次修改日期:2010年9月27日 */package graphic;/聲明一個(gè)圖形包import category.*;/導(dǎo)入類的設(shè)計(jì)與構(gòu)造包import javax.swing.JOptionPane;/* * 主函數(shù) * 負(fù)責(zé)實(shí)現(xiàn)程序的整個(gè)功能 */public class Graphic_Calculation public static void main(String args) double radius=0;/圓的半徑double a=0,b=0,c=0;/三角形的三條邊double length=0,width=0;/矩形的長和寬double area=0,circumference=0;String str_Select,str_Graphic;/* * data_input_one:選擇計(jì)算圖形的哪種屬性,面積還是周長 * data_input_two:選擇計(jì)算哪種圖形,圓、三角形還是矩形 */int data_input_one=0,data_input_two=0;/記錄輸入的數(shù)據(jù),可用來判斷輸入是否合法boolean flag=true;boolean indication=true;/* * 進(jìn)行初次選擇 * 讓用戶選擇進(jìn)行圖形的周長運(yùn)算還是面積運(yùn)算 * 【1】計(jì)算面積 * 【2】計(jì)算周長 * 【3】計(jì)算面積與周長 */while(flag)str_Select=JOptionPane.showInputDialog(您想計(jì)算圖形的面積還是周長?n【1】面積n【2】周長n【3】面積與周長);trydata_input_one=Integer.parseInt(str_Select);/* * 為了防止循環(huán)時(shí)出現(xiàn)indication的死循環(huán)狀況 * 例如:假設(shè)首次輸入操作非法,則indication會(huì)被賦值false,此時(shí)出現(xiàn)死循環(huán) * 故在此仍要重新聲明indication的值為true */indication=true;if(data_input_one3)JOptionPane.showMessageDialog(null,您輸入的數(shù)字不在選項(xiàng)內(nèi)!,警告,JOptionPane.INFORMATION_MESSAGE);indication=false;catch(Exception e)JOptionPane.showMessageDialog(null,非法數(shù)據(jù),警告,JOptionPane.INFORMATION_MESSAGE);indication=false;if(indication)flag=false;/* * 選擇要進(jìn)行哪種圖形的運(yùn)算 * 【1】圓 * 【2】三角形 * 【3】矩形 */flag=true;/對flag重新賦真值while(flag)str_Graphic=JOptionPane.showInputDialog(要計(jì)算的是什么圖形?n【1】圓n【2】三角形n【3】矩形);trydata_input_two=Integer.parseInt(str_Graphic);indication=true;if(data_input_two3)JOptionPane.showMessageDialog(null,您輸入的數(shù)字不在選項(xiàng)內(nèi)!,警告,JOptionPane.INFORMATION_MESSAGE);indication=false;catch(Exception e)JOptionPane.showMessageDialog(null,非法數(shù)據(jù),警告,JOptionPane.INFORMATION_MESSAGE);indication=false;if(indication)flag=false;/* * 各種圖形屬性計(jì)算的實(shí)現(xiàn) * 先進(jìn)行數(shù)據(jù)的輸入,然后再根據(jù)要求輸出 */* * 輸入語句的實(shí)現(xiàn) */flag=true;switch(data_input_two)case 1:/圓的數(shù)據(jù)輸入while(flag)tryString strRadius=JOptionPane.showInputDialog(請輸入圓的半徑:);radius=Double.parseDouble(strRadius);indication=true;if(radius=0)JOptionPane.showInputDialog(null,您輸入的數(shù)小于等于零!,警告,JOptionPane.INFORMATION_MESSAGE);indication=false;catch(Exception e)JOptionPane.showMessageDialog(null,非法數(shù)據(jù),警告,JOptionPane.INFORMATION_MESSAGE);indication=false;if(indication)flag=false;break;case 2:/三角形的數(shù)據(jù)輸入while(flag)tryString strA=JOptionPane.showInputDialog(請輸入三角形的第一條邊長:);String strB=JOptionPane.showInputDialog(請輸入三角形的第二條邊長:);String strC=JOptionPane.showInputDialog(請輸入三角形的第三條邊長:);a=Double.parseDouble(strA);b=Double.parseDouble(strB);c=Double.parseDouble(strC);indication=true;if(a=0|b=0|c=0|a+b=c|b+c=a|c+a=b)JOptionPane.showMessageDialog(null,您輸入的三個(gè)數(shù)無法構(gòu)成三角形!,警告,JOptionPane.INFORMATION_MESSAGE);indication=false;catch(Exception e)JOptionPane.showMessageDialog(null,非法數(shù)據(jù),警告,JOptionPane.INFORMATION_MESSAGE);indication=false;if(indication)flag=false;break;case 3:/矩形的數(shù)據(jù)輸入while(flag)tryString strLength=JOptionPane.showInputDialog(請輸入矩形的長:);String strWidth=JOptionPane.showInputDialog(請輸入矩形的寬:);length=Double.parseDouble(strLength);width=Double.parseDouble(strWidth);indication=true;catch(Exception e)JOptionPane.showMessageDialog(null,非法數(shù)據(jù),警告,JOptionPane.INFORMATION_MESSAGE);indication=false;if(indication)flag=false;break;/* * 具體屬性的計(jì)算 * 先根據(jù)data_input_one的取值判斷需要計(jì)算的是哪個(gè)屬性值(面積還是周長) * 然后根據(jù)data_input_two的取值判斷需要計(jì)算的是哪種圖形 */Circle C=new Circle(radius);Triangle T=new Triangle(a,b,c);Rentangle R=new Rentangle(length,width);switch(data_input_one)case 1:/計(jì)算圖形的面積switch(data_input_two)case 1:area=C.getArea();break;case 2:area=T.getArea();break;case 3:area=R.getArea();break;break;case 2:/計(jì)算圖形的周長switch(data_input_two)case 1:circumference=C.getCircumference();break;case 2:circumference=T.getCircumference();break;case 3:circumference=R.getCircumference();break;break;case 3:/計(jì)算圖形的面積與周長switch(data_input_two)case 1:area=C.getArea();circumference=C.getCircumference();break;case 2:area=T.getArea();circumference=T.getCircumference();break;case 3:area=R.getArea();circumference=R.getCircumference();break;break;/* * 輸出語句的實(shí)現(xiàn) * 先根據(jù)data_input_two的取值判斷輸出的是哪種圖形 * 然后根據(jù)data_input_one的取值判斷需要輸出哪些屬性值(面積還是周長) */switch(data_input_two)case 1:switch(data_input_one)case 1:JOptionPane.showMessageDialog(null,圓的半徑:+C.getRadius()+n面積:+area,結(jié)果,JOptionPane.INFORMATION_MESSAGE);break;case 2:JOptionPane.showMessageDialog(null,圓的半徑:+C.getRadius()+n周長:+circumference,結(jié)果,JOptionPane.INFORMATION_MESSAGE);break;case 3:JOptionPane.showMessageDialog(null,圓的半徑:+C.getRadius()+n面積:+area+n周長:+circumference,結(jié)果,JOptionPane.INFORMATION_MESSAGE);break;break;case 2:switch(data_input_one)case 1:JOptionPane.showMessageDialog(null,三角形的三條邊長:+T.getA()+ +T.getB()+ +T.getC()+n面積:+area,結(jié)果,JOptionPane.INFORMATION_MESSAGE);break;case 2:JOptionPane.showMessageDialog(null,三
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年工程合同協(xié)議審批會(huì)簽單
- 《找規(guī)律》(教案)北師大版三年級下冊數(shù)學(xué)
- 農(nóng)村建房合同協(xié)議書電子版(2025年版)
- 第13課 網(wǎng)絡(luò)安全防范 教學(xué)設(shè)計(jì) 2024-2025學(xué)年浙教版(2023)初中信息技術(shù)八年級上冊
- 第五單元-解決問題的策略-(單元測試)-蘇教版數(shù)學(xué)三年級上冊(含解析)
- 2023年現(xiàn)場總線智能儀表投資申請報(bào)告
- 2025年廣西演藝職業(yè)學(xué)院單招職業(yè)傾向性測試題庫完整版
- 2024年電工儀器儀表項(xiàng)目資金需求報(bào)告代可行性研究報(bào)告
- 2025年黑龍江省單招職業(yè)適應(yīng)性測試題庫一套
- 2025陜西省建筑安全員-A證考試題庫附答案
- 【《蘇泊爾公司存貨管理的優(yōu)化建議分析》13000字論文】
- 2024年車載SoC發(fā)展趨勢及TOP10分析報(bào)告-2024-09-零部件
- 伽馬數(shù)據(jù):2024年中國游戲產(chǎn)業(yè)趨勢及潛力分析報(bào)告
- 北師大版八年級生物下冊全冊課件(2024年春季版)
- 高一英語完形填空專項(xiàng)訓(xùn)練100(附答案)及解析
- 機(jī)房基礎(chǔ)設(shè)施運(yùn)行維護(hù)管理標(biāo)準(zhǔn)規(guī)范
- 收費(fèi)站稽查管理制度
- 老年心房顫動(dòng)診治中國專家共識(shí)(2024)解讀
- NB-T31056-2014風(fēng)力發(fā)電機(jī)組接地技術(shù)規(guī)范
- 部編版八年級上冊歷史期中復(fù)習(xí)重點(diǎn)總結(jié)
- DL5190.5-2019電力建設(shè)施工技術(shù)規(guī)范第5部分:管道及系統(tǒng)
評論
0/150
提交評論