895191508Java課程設(shè)計(jì)報(bào)告_第1頁(yè)
895191508Java課程設(shè)計(jì)報(bào)告_第2頁(yè)
895191508Java課程設(shè)計(jì)報(bào)告_第3頁(yè)
895191508Java課程設(shè)計(jì)報(bào)告_第4頁(yè)
895191508Java課程設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 湖湖 南南 農(nóng)農(nóng) 業(yè)業(yè) 大大 學(xué)學(xué) java 課程設(shè)計(jì)報(bào)告課程設(shè)計(jì)報(bào)告 計(jì)算器軟件設(shè)計(jì)計(jì)算器軟件設(shè)計(jì) 學(xué)生姓名:學(xué)生姓名: 學(xué)學(xué) 號(hào):號(hào): 年級(jí)專業(yè):年級(jí)專業(yè): 指導(dǎo)老師:指導(dǎo)老師: 學(xué)學(xué) 院:院: 1 目目 錄錄 1. 前言前言2 2概要設(shè)計(jì)概要設(shè)計(jì)3 2.1 開(kāi)發(fā)環(huán)境開(kāi)發(fā)環(huán)境3 2.2 計(jì)算器功能計(jì)算器功能3 2.3 界面設(shè)計(jì)界面設(shè)計(jì)3 2.4 類類 uml 圖圖4 3. 詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)4 3.1 使用的使用的 java 類的說(shuō)明類的說(shuō)明4 3.2 類的主要方法類的主要方法5 3.2.1 處理按了運(yùn)算符后的計(jì)算處理按了運(yùn)算符后的計(jì)算5 3.2.2 處理輸入字符處理輸入字符6 3.2.3

2、 進(jìn)制的轉(zhuǎn)換進(jìn)制的轉(zhuǎn)換6 3.2.4 設(shè)計(jì)總體認(rèn)識(shí)設(shè)計(jì)總體認(rèn)識(shí)7 3.2.5 程序流程圖程序流程圖8 4. 運(yùn)行結(jié)果運(yùn)行結(jié)果8 5. 測(cè)試分析測(cè)試分析9 5.1 程序運(yùn)行情況程序運(yùn)行情況9 5.2 程序異常處理程序異常處理9 6. 源程序源程序9 參考文獻(xiàn)參考文獻(xiàn)27 致致 謝謝27 2 摘要:摘要:該程序是一個(gè)圖形界面的簡(jiǎn)單的 java 計(jì)算器,具有良好的界面,使 用人員能快捷簡(jiǎn)單地進(jìn)行操作。即時(shí)準(zhǔn)確地獲得需要的計(jì)算的結(jié)果,充分降低 了數(shù)字計(jì)算的難度和節(jié)約了時(shí)間,對(duì)人們的生活有一定的幫助??梢赃M(jìn)行簡(jiǎn)單 的四則運(yùn)算(加、減、乘、除,以及開(kāi)平方)但僅限于十進(jìn)制下,還可以進(jìn)行 (八進(jìn)制,十進(jìn)制,十

3、六進(jìn)制)之間的相互轉(zhuǎn)換,八進(jìn)制最多可以輸入 19 位數(shù), 十進(jìn)制最多可以輸入 18 位數(shù),十六進(jìn)制最多可以輸入 14 位數(shù),backspace 表示 退格, clear 表示初始化,sqrt 表示開(kāi)平方,界面為灰白對(duì)稱。 關(guān)鍵字:關(guān)鍵字:java、計(jì)算器類、方法、事件 1 前言前言 隨著科學(xué)技術(shù)的不斷發(fā)展,計(jì)算機(jī)已經(jīng)成為我們工作學(xué)習(xí)和生活中不可缺 少的工具。文本編輯器是個(gè)人計(jì)算機(jī)最司空見(jiàn)慣的應(yīng)用程序了,在學(xué)習(xí)了 java 語(yǔ)言之后,我決定使用 java 語(yǔ)言編寫一個(gè)簡(jiǎn)單的計(jì)算器,可以實(shí)現(xiàn)簡(jiǎn)單的運(yùn) 算功能,滿足日常基本的工作學(xué)習(xí)和娛樂(lè)需要。 java 是由 sun 公司開(kāi)發(fā)的新一代純面向?qū)ο蟮木W(wǎng)

4、絡(luò)編程語(yǔ)言。其目標(biāo)是建 立一種在任意種機(jī)器、任一種操作系統(tǒng)的網(wǎng)絡(luò)環(huán)境中運(yùn)行的軟件,實(shí)行所謂的 “程序?qū)懸淮危教庍\(yùn)行”的目標(biāo)。正因?yàn)槿绱?,java 已成為當(dāng)今 internet 上最流行、最受歡迎的一種程序開(kāi)發(fā)語(yǔ)言。 java 開(kāi)發(fā)小組把 java 按特性分為基本版、移動(dòng)版、企業(yè)版,每個(gè)版本有 一個(gè)軟件開(kāi)發(fā)包。java 基本版本叫 java 2 標(biāo)準(zhǔn)版(java 2 standard edition,j2se),它包含建立 java 應(yīng)用程序或者是 applet 所需的應(yīng)用程序編程 接口(api) 。java 2 移動(dòng)版(the java 2 mobile edition,j2me)包含創(chuàng)建

5、無(wú)線 java 應(yīng)用程序的 api。還有 java 2 企業(yè)版(the java 2 enterprise,j2ee)是 j2se 的增強(qiáng)版本,包含建立多層架構(gòu)應(yīng)用程序 api。 java 語(yǔ)言是由 c+語(yǔ)言發(fā)展起而來(lái)的,是一種徹底的面向?qū)ο蟮某绦蛟O(shè)計(jì) 語(yǔ)言。作為一種純面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,它非常適合大型軟件的開(kāi)發(fā)。 java 語(yǔ)言去掉了 c+語(yǔ)言的一些容易引起錯(cuò)誤的特性。java 語(yǔ)言的特點(diǎn)有:面 向?qū)ο?、跨平臺(tái)、安全性、多線程和圖形功能強(qiáng)。 3 2 概要設(shè)計(jì)概要設(shè)計(jì) 2.1 開(kāi)發(fā)環(huán)境開(kāi)發(fā)環(huán)境 開(kāi)發(fā)平臺(tái):microsoft windows xp professional service p

6、ack 2 開(kāi)發(fā)工具:jbuilder 2007 + jdk 1.6.0_02 2.2 計(jì)算器功能計(jì)算器功能 功能 1:按下數(shù)字鍵在液晶平上會(huì)顯示數(shù)字,這時(shí)計(jì)算器最基本的功能。 功能 2:在任何時(shí)候按下“”鍵,計(jì)算器文本框上的數(shù)字置反號(hào)。 功能 3:第一次按下“運(yùn)算”鍵,再按下數(shù)字鍵,將重新輸入第二個(gè)數(shù)字。再次按下 “運(yùn) 算”鍵,將算出前兩個(gè)數(shù)字運(yùn)算的結(jié)果,然后按下數(shù)字,將又重新輸入新的數(shù)字。 功能 4:輸入數(shù)字后,按下“等于”鍵,將仍輸出原來(lái)的數(shù) 輸入運(yùn)算符和第二個(gè)數(shù)字 后再按下“=”鍵,將得到二者運(yùn)算的結(jié)果,然后又重復(fù)功能 3 和功能 4 。 功能 5:按下清除“c”鍵,數(shù)據(jù)被全部清楚。

7、2.32.3 界面設(shè)計(jì)界面設(shè)計(jì) 圖 2.3 計(jì)算器面板 4 2.4 類類 uml 圖圖 arraystackchar uml 圖如圖 2.3a 所示: arraystackdouble uml 圖如圖 2.3b 所示 圖 2.4a 圖 2.4b 3 詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì) 3.1 計(jì)算器使用的計(jì)算器使用的 java 類的說(shuō)明類的說(shuō)明 類名: this_number_too_big 作用: 自定義的異常類,用來(lái)處理計(jì)算結(jié)果溢出 繼承的父類: exception 類 實(shí)現(xiàn)的接口: 沒(méi)有 class this_number_too_big extends exception /自定義的一個(gè)結(jié)果溢出異常類

8、5 類名: jsp2003 作用: 主類。 繼承的父類: frame 類 實(shí)現(xiàn)的接口: itemlistener 類,actionlistener 類 class jsp2003 extends frame implements itemlistener,actionlistener public int number=0,length=18; /number 是用來(lái)記錄輸入的數(shù)字個(gè)數(shù), /length 是用來(lái)設(shè)置在不同進(jìn)制下允許輸入的最多數(shù)字位數(shù),默認(rèn)為十 進(jìn) 制 public char mark=n; /設(shè)置運(yùn)算符號(hào)為沒(méi)有即為n,它的值是+-*/ public double data=0;

9、 /設(shè)置運(yùn)算數(shù)據(jù)為零 public char ch; /用來(lái)臨時(shí)存放所按按鈕的第一個(gè)字符 public boolean refresh=false; /設(shè)置 lab 是否要在輸入數(shù)據(jù)的時(shí)候刷新,初始為否 程序的設(shè)計(jì)參考了 sun java 網(wǎng)站里的大量實(shí)例,比如 layout 的使用、 event 的處理、components 的添加與應(yīng)用等等。其中: public class newcalc extends jframe implements actionlistener 語(yǔ)句實(shí)現(xiàn)了 actionlistener 接口,因此可以調(diào)用 addactionlistener(this) 方法對(duì)按鈕

10、進(jìn)行點(diǎn)擊監(jiān)聽(tīng),在下面的 public void actionperformed(actionevent e)方法里面對(duì)各個(gè)點(diǎn)擊事件進(jìn)行處理。 3.2 類的主要方法 3.2.1 處理按了運(yùn)算符后的計(jì)算: public void js() throws this_number_too_big if (mark=n) mark=ch; / data=double.parsedouble(lab.gettext(); refresh=true; else 6 switch (mark) case +: data+=double.parsedouble(lab.gettext(); break; cas

11、e -: data-=double.parsedouble(lab.gettext(); break; case *: data*=double.parsedouble(lab.gettext(); break; case /: data/=double.parsedouble(lab.gettext(); break; lab.settext(double.tostring(data); mark=ch; refresh=true; number=lab.gettext().length(); / system.out.println(lab.gettext(); if (datadoubl

12、e.max_value) throw new this_number_too_big(); 3.2.2 處理輸入字符: if(refresh=true) lab.settext(0); number=0; refresh=false; if(lab.gettext().charat(0)=0 number+; else if(numberlength) number+;lab.settext(lab.gettext()+ch); 3.2.3 八進(jìn)制或十六進(jìn)制轉(zhuǎn)換成十進(jìn)制 i: public string goto_10(string s,long l) /參數(shù) s: 是要轉(zhuǎn)換的字符串,由于輸入

13、的控制,保證了字符串的合法 性; /參數(shù) l: 使用來(lái)設(shè)置是將 8 進(jìn)制還是 16 進(jìn)制轉(zhuǎn)換成 10 進(jìn)制,它的有 7 效值為 8 或 16; string str=s; /用來(lái)轉(zhuǎn)換的字符串 long j=l; /表示進(jìn)制 long lg=0,jing=1;/lg 用來(lái)記錄權(quán)乘和,jing 用來(lái)記錄位權(quán) char cha;/臨時(shí)記錄要轉(zhuǎn)換的字符 for(int i=1;i=str.length();i+) cha=str.charat(str.length()-i); switch(cha) case 1: lg=lg+1*jing;break; case 2: lg=lg+2*jing;br

14、eak; case 3: lg=lg+3*jing;break; case 4: lg=lg+4*jing;break; case 5: lg=lg+5*jing;break; case 6: lg=lg+6*jing;break; case 7: lg=lg+7*jing;break; case 8: lg=lg+8*jing;break; case 9: lg=lg+9*jing;break; case a: lg=lg+10*jing;break; case b: lg=lg+11*jing;break; case c: lg=lg+12*jing;break; case d: lg=l

15、g+13*jing;break; case e: lg=lg+14*jing;break; case f: lg=lg+15*jing;break; jing*=j; /位權(quán)升一級(jí),為下次使用做好準(zhǔn)備 return long.tostring(lg); /end string goto_10() method 8 3.2.4 設(shè)計(jì)的總體認(rèn)識(shí) java 設(shè)計(jì)的摘要 java 設(shè)計(jì)的目錄結(jié)構(gòu) java 設(shè)計(jì)的概要和詳細(xì)設(shè)計(jì) java 設(shè)計(jì)的版權(quán)意識(shí) java 設(shè)計(jì)需要編譯的環(huán)境 java 設(shè)計(jì)的實(shí)用性 3.2.5 程序流程圖程序流程圖 計(jì)算結(jié)果顯示 接受用戶輸入 是否再 次計(jì)算 退出 是 否 處理

16、異常 圖 3 繪制計(jì)算器方法 pad 圖 開(kāi)始 選擇你要計(jì)算運(yùn)行的進(jìn)制 10.8.16 十六進(jìn)制八進(jìn)制默認(rèn)十進(jìn)制 進(jìn)制轉(zhuǎn)換 刷新 9 4 運(yùn)行結(jié)果運(yùn)行結(jié)果 圖 4 計(jì)算結(jié)果顯示 5 測(cè)試分析測(cè)試分析 5.1 程序運(yùn)行情況程序運(yùn)行情況: 程序正常的響應(yīng)按鈕事件,輸入的數(shù)值長(zhǎng)度受變量 length 的限定,進(jìn)行混合四 則運(yùn)算的時(shí)候,結(jié)果如果不是很大,可以正常顯示,但如果結(jié)果很大,就可能 采用科學(xué)記數(shù)方式,這樣帶來(lái)了進(jìn)制轉(zhuǎn)換時(shí)的麻煩,需要特殊的處理科學(xué)記數(shù) 里的 e ,當(dāng)結(jié)果太大的時(shí)候,有可能超出可能表示的最大值, (結(jié)果溢出) ,這 個(gè)時(shí)候就要對(duì)結(jié)果進(jìn)行必要的異常處理,我在輸出結(jié)果的方法內(nèi)設(shè)置 i

17、f 語(yǔ)句, 如果結(jié)果大于某一個(gè)值就拋出一個(gè) this_number_too_big 類型的類,再使用 try-catch,捕捉輸出結(jié)果的方法拋出的異常對(duì)象。然后進(jìn)行,重制歸零的處理。 5.2 程序異常處理程序異常處理: 當(dāng)結(jié)果超出 double.max_value 時(shí),將拋出一個(gè) this_number_too_big 類 的異常對(duì)象,這個(gè)是我自定義的一個(gè)異常類它繼承自 exception 類,然后使 用 try-catch 去捕捉這個(gè)異常,異常的處理如下: try 10 js(); catch(this_number_too_big e) lab.settext(0); number=0;

18、mark=n; refresh=false; system.out.println(the number is too big); /如果出現(xiàn)異常則初始化效果如同 clear 鍵 6 6 程序清單:程序清單: import java.awt.*; import java.awt.event.*; class this_number_too_big extends exception / 自定義的一個(gè)結(jié)果溢出異常類 / actionlintsner 是所有監(jiān)聽(tīng)器的父類,其它監(jiān)聽(tīng)器可以監(jiān)聽(tīng)的事件都可以被 它捕獲 / itemlistener 用于捕獲帶有 item 的組件產(chǎn)生的事件,如 combo

19、box,checkbox,radiobutton,togglebutton class hejiang extends frame implements itemlistener, actionlistener public hejiang() addwindowlistener(new windowadapter() public void windowclosing(windowevent e) dispose(); system.exit(0); / 給窗口注冊(cè)一個(gè)事件監(jiān)聽(tīng)器,當(dāng)你點(diǎn)了窗口右上方的叉號(hào)時(shí), 此方法被調(diào)用 ); static hejiang mainframe = new

20、hejiang(); / 創(chuàng)建一個(gè) mainframe static label lab1 = new label(0); static label lab = new label(0); static panel pnl1 = new panel(new gridlayout(4, 3, 3, 3); / 創(chuàng)建新 的面板.布局管理 11 static panel pnl2 = new panel(new gridlayout(4, 1, 3, 3); static panel pnl3 = new panel(new gridlayout(1, 2, 3, 3); static panel

21、pnl4 = new panel(new gridlayout(6, 1, 3, 3); static button bt9 = new button(9); static button bt8 = new button(8); static button bt7 = new button(7); static button bt6 = new button(6); static button bt5 = new button(5); static button bt4 = new button(4); static button bt3 = new button(3); static but

22、ton bt2 = new button(2); static button bt1 = new button(1); static button bt0 = new button(0); static button btdot = new button(.); static button btequ = new button(=); static button btadd = new button(+); static button btsub = new button(-); static button btmul = new button(*); static button btdev

23、= new button(/); static button bta = new button(a); static button btb = new button(b); static button btc = new button(c); static button btd = new button(d); static button bte = new button(e); static button btf = new button(f); static checkbox ckb8 = new checkbox(八進(jìn)制); static checkbox ckb10 = new che

24、ckbox(十進(jìn)制); static checkbox ckb16 = new checkbox(十六進(jìn)制); static button btc = new button(clear); static button btt = new button(backspace); public int number = 0, length = 18; / number 是用來(lái)記錄輸入的數(shù)字個(gè)數(shù),length 是用來(lái)設(shè)置在不同進(jìn)制下允許 輸入的最多數(shù)字位數(shù),默認(rèn)為十進(jìn)制 public char mark = n; / 設(shè)置運(yùn)算符號(hào)為沒(méi)有即為n ,它的值是 + - * / public double d

25、ata = 0; / 設(shè)置運(yùn)算數(shù)據(jù)為零 public char ch; / 用來(lái)臨時(shí)存放所按按鈕的第一個(gè)字符 public boolean refresh = false;/ 設(shè)置 lab 是否要在輸入數(shù)據(jù)的時(shí)候刷新, 初始為否 public static void main(string args) system.out.println(starting hejiang.); lab.setalignment(label.right); / 對(duì)齊方式 lab.setbackground(color.lightgray); / 背景色 12 lab.setforeground(color.bl

26、ue); / 前景色 lab.setfont(new font(serief, font.bold, 18);/ 字體設(shè)置 lab.setbounds(14, 33, 216, 40); lab1.setalignment(label.right); / 對(duì)齊方式 lab1.setbackground(color.lightgray); / 背景色 lab1.setforeground(color.blue); / 前景色 lab1.setfont(new font(serief, font.bold, 18);/ 字體設(shè)置 lab1.setbounds(14, 75, 216, 40); m

27、ainframe.add(lab); mainframe.add(lab1); checkboxgroup grp = new checkboxgroup(); ckb8.setcheckboxgroup(grp); ckb10.setcheckboxgroup(grp); ckb16.setcheckboxgroup(grp); ckb8.setbounds(14, 115, 55, 25); / setbounds()方法是可以設(shè)定 控件的大小和位置 ckb10.setbounds(69, 115, 55, 25); ckb16.setbounds(124, 115, 65, 25); c

28、kb8.setstate(false); ckb10.setstate(true); ckb16.setstate(false); mainframe.add(ckb8); mainframe.add(ckb10); mainframe.add(ckb16); pnl1.setbounds(18, 180, 120, 150); pnl2.setbounds(144, 180, 40, 150); pnl3.setbounds(14, 140, 170, 36); pnl4.setbounds(190, 140, 40, 190); pnl1.add(bt7); pnl1.add(bt8);

29、pnl1.add(bt9); pnl1.add(bt4); pnl1.add(bt5); pnl1.add(bt6); pnl1.add(bt1); pnl1.add(bt2); pnl1.add(bt3); pnl1.add(bt0); pnl1.add(btdot); pnl1.add(btequ); pnl2.add(btadd); pnl2.add(btsub); pnl2.add(btmul); pnl2.add(btdev); 13 pnl3.add(btt); pnl3.add(btc); pnl4.add(bta); pnl4.add(btb); pnl4.add(btc);

30、pnl4.add(btd); pnl4.add(bte); pnl4.add(btf); bta.enable(false); btb.enable(false); btc.enable(false); btd.enable(false); bte.enable(false); btf.enable(false); mainframe.add(pnl1); mainframe.add(pnl2); mainframe.add(pnl3); mainframe.add(pnl4); mainframe.setresizable(false); / 窗口可以最小化和關(guān)閉,但是不 能被任意改變大小

31、mainframe.setlayout(null); mainframe.setsize(240, 350); mainframe.settitle(小型計(jì)算器); mainframe.setvisible(true); / 組件可見(jiàn) ckb8.additemlistener(mainframe); ckb10.additemlistener(mainframe); ckb16.additemlistener(mainframe); / 把事件聆聽(tīng)者向各個(gè)組鍵注冊(cè) bt1.addactionlistener(mainframe); bt2.addactionlistener(mainframe

32、); bt3.addactionlistener(mainframe); bt4.addactionlistener(mainframe); bt5.addactionlistener(mainframe); bt6.addactionlistener(mainframe); bt7.addactionlistener(mainframe); bt8.addactionlistener(mainframe); bt9.addactionlistener(mainframe); bt0.addactionlistener(mainframe); btadd.addactionlistener(m

33、ainframe); btsub.addactionlistener(mainframe); btmul.addactionlistener(mainframe); btdev.addactionlistener(mainframe); btt.addactionlistener(mainframe); btc.addactionlistener(mainframe); 14 btdot.addactionlistener(mainframe); btequ.addactionlistener(mainframe); bta.addactionlistener(mainframe); btb.

34、addactionlistener(mainframe); btc.addactionlistener(mainframe); btd.addactionlistener(mainframe); bte.addactionlistener(mainframe); btf.addactionlistener(mainframe); / end main() mothed / checkbox 事件的處理 public void itemstatechanged(itemevent e) mark = n; refresh = false; / 規(guī)定當(dāng)進(jìn)制轉(zhuǎn)換時(shí)以前輸入的運(yùn)算符失效 if (ckb

35、8.getstate() = true) bta.enable(false); btb.enable(false); btc.enable(false); btd.enable(false); bte.enable(false); btf.enable(false); bt9.enable(false); bt8.enable(false); btdot.enable(false); btadd.enable(false); btmul.enable(false); btsub.enable(false); btdev.enable(false); btequ.enable(false); /

36、 在八進(jìn)制的情況下對(duì)有些按件的管理 if (length = 18) lab.settext(goto10_8(lab.gettext(); number = lab.gettext().length(); if (length = 14) lab.settext(goto_10(lab.gettext(), 16l); lab.settext(goto10_8(lab.gettext(); number = lab.gettext().length(); / 將其他進(jìn)制轉(zhuǎn)換成八進(jìn)制 length = 19; / 在八進(jìn)制下允許輸入數(shù)字個(gè)數(shù)最多為 19 位 15 if (ckb10.getst

37、ate() = true) bta.enable(false); btb.enable(false); btc.enable(false); btd.enable(false); bte.enable(false); btf.enable(false); bt9.enable(true); bt8.enable(true); btdot.enable(true); btadd.enable(true); btmul.enable(true); btsub.enable(true); btdev.enable(true); btequ.enable(true); / 在十進(jìn)制的情況下對(duì)有些控件的

38、管理 if (length = 19) lab.settext(goto_10(lab.gettext(), 8l); number = lab.gettext().length(); if (length = 14) lab.settext(goto_10(lab.gettext(), 16l); number = lab.gettext().length(); if (length = 19) lab1.settext(goto_10(lab1.gettext(), 8l); number = lab1.gettext().length(); if (length = 14) lab1.s

39、ettext(goto_10(lab1.gettext(), 16l); number = lab1.gettext().length(); length = 18; if (ckb16.getstate() = true) bta.enable(true); btb.enable(true); btc.enable(true); btd.enable(true); bte.enable(true); btf.enable(true); bt9.enable(true); bt8.enable(true); btdot.enable(false); 16 btadd.enable(false)

40、; btmul.enable(false); btsub.enable(false); btdev.enable(false); btequ.enable(false); / 在十六進(jìn)制的情況下對(duì)有些按件的管理 if (length = 18) lab.settext(goto10_16(lab.gettext(); number = lab.gettext().length(); if (length = 19) lab.settext(goto_10(lab.gettext(), 8l); lab.settext(goto10_16(lab.gettext(); number = lab.

41、gettext().length(); / 將其他進(jìn)制轉(zhuǎn)換成十六進(jìn)制 length = 14; / 在十六進(jìn)制下允許輸入數(shù)字個(gè)數(shù)最多為 14 位 / end itemstatechanged(itemevent e) method / 按鈕事件的處理 public void actionperformed(actionevent m) / 鼠標(biāo)點(diǎn)激就觸發(fā)事件監(jiān) 聽(tīng) button btn = (button) m.getsource(); ch = btn.getlabel().charat(0); deposit(ch); switch (ch) case c: lab.settext(0);

42、 number = 0; mark = n; refresh = false; break;/ 初始化 case 1: enter(); break; case 2: enter(); break; case 3: enter(); 17 break; case 4: enter(); break; case 5: enter(); break; case 6: enter(); break; case 7: enter(); break; case 8: enter(); break; case 9: enter(); break; case 0: if (refresh = true) l

43、ab.settext(0); number = 0; refresh = false; if (lab.gettext().charat(0) = 0 if (number length) number+; lab.settext(lab.gettext() + ch); else break; break; case a: enter(); break; case b: enter(); break; case c: enter(); break; 18 case d: enter(); break; case e: enter(); break; case f: enter(); brea

44、k; case .: if (refresh = true) lab.settext(0); number = 0; refresh = false; if (lab.gettext().indexof(.) = -1) number+; lab.settext(lab.gettext() + ch); else break; break; case b: if (number = 0) break; else if (-number = 0) lab.settext(0); number = 0; else if (number != 1) lab.settext(lab.gettext()

45、.substring(0, number); else lab .settext(character.tostring(lab.gettext() .charat(0); break; case +: try js(); catch (this_number_too_big e) 19 lab.settext(0); number = 0; mark = n; refresh = false; system.out.println(the number is too big); break; / 如果出現(xiàn)異常則初始化效果如同 clear 鍵 case -: try js(); catch (t

46、his_number_too_big e) lab.settext(0); number = 0; mark = n; refresh = false; system.out.println(the number is too big); break; / 如果出現(xiàn)異常則初始化效果如同 clear 鍵 case *: try js(); catch (this_number_too_big e) lab.settext(0); number = 0; mark = n; refresh = false; system.out.println(the number is too big); br

47、eak; / 如果出現(xiàn)異常則初始化效果如同 clear 鍵 case /: try js(); catch (this_number_too_big e) lab.settext(0); number = 0; mark = n; refresh = false; system.out.println(the number is too big); break; / 如果出現(xiàn)異常則初始化效果如同 clear 鍵 20 case =: try js(); catch (this_number_too_big e) lab.settext(0); number = 0; mark = n; ref

48、resh = false; system.out.println(the number is too big); break; / 如果出現(xiàn)異常則初始化效果如同 clear 鍵 / end actionperformed(actionevent e) method / 八進(jìn)制或十六進(jìn)制轉(zhuǎn)換成十進(jìn)制 i public string goto_10(string s, long l) / 參數(shù) s: 是要轉(zhuǎn)換的字符串,由于輸入的控制,保證了字符串的合法性; / 參數(shù) l: 使用來(lái)設(shè)置是將 8 進(jìn)制還是 16 進(jìn)制轉(zhuǎn)換成 10 進(jìn)制,它的有效值 為 8 或 16; string str = s; /

49、 用來(lái)轉(zhuǎn)換的字符串 long j = l; / 表示進(jìn)制 long lg = 0, jing = 1;/ lg 用來(lái)記錄權(quán)乘和,jing 用來(lái)記錄位權(quán) char cha;/ 臨時(shí)記錄要轉(zhuǎn)換的字符 for (int i = 1; i = 16) ch = lg % 16; k = (int) ch; switch (k) case 10: st = a + st; break; case 11: st = b + st; break; case 12: st = c + st; break; case 13: st = d + st; break; case 14: st = e + st; b

50、reak; case 15: st = f + st; break; default: st = long.tostring(ch) + st; lg = lg / 16; k = (int) lg; switch (k) case 10: st = a + st; break; case 11: st = b + st; 23 break; case 12: st = c + st; break; case 13: st = d + st; break; case 14: st = e + st; break; case 15: st = f + st; break; default: st

51、 = long.tostring(lg) + st; return st; / end goto10_16() method / 十進(jìn)制轉(zhuǎn)換成八進(jìn)制? public string goto10_8(string s) / 參數(shù) s: 是要轉(zhuǎn)換的字符串,由于輸入的控制,保證了字符串的合法性; string str = s; if (str.charat(0) = -) / 如果有負(fù)號(hào)則出去負(fù)號(hào) str = str.substring(1, str.length() - 1); if (str.indexof(e) != -1)/ 如果是科學(xué)計(jì)數(shù)值則出去小數(shù)點(diǎn)和 e 后面的數(shù) str = str.

52、charat(0) + str.substring(2, str.indexof(e); if (str.indexof(.) != -1)/ 如果有小數(shù)點(diǎn)則出去小數(shù)點(diǎn)及小數(shù)點(diǎn) 后面的內(nèi)容 str = str.substring(0, str.indexof(.); lg = long.parselong(str); while (lg = j) ch = lg % j; st = long.tostring(ch) + st; lg = lg / j; st = long.tostring(lg) + st; return st; / end goto10_8() method / 輸入字符 public void enter() if (refresh = true) 24 / 如果已經(jīng)設(shè)置了 運(yùn)算符則在下一次輸入數(shù)據(jù)的時(shí)候要把以前 lab 的 內(nèi)容清除掉 lab.settext(0); number = 0; refresh = false; if (lab.gettext().charat(0) = 0 number+; else if (number double.max_value) / 如果 data 超過(guò) double 類型的最大值則拋出自定義的一個(gè)異常 類 throw new this_number_too_big(); / end js() method

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論