Java課程設(shè)計(論文)簡易計算器的設(shè)計與實現(xiàn)的課程論文_第1頁
Java課程設(shè)計(論文)簡易計算器的設(shè)計與實現(xiàn)的課程論文_第2頁
Java課程設(shè)計(論文)簡易計算器的設(shè)計與實現(xiàn)的課程論文_第3頁
Java課程設(shè)計(論文)簡易計算器的設(shè)計與實現(xiàn)的課程論文_第4頁
Java課程設(shè)計(論文)簡易計算器的設(shè)計與實現(xiàn)的課程論文_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、西北農(nóng)林科技大學(xué)信息工程學(xué)院簡易計算器的設(shè)計與實現(xiàn)的課程論文 學(xué) 號姓 名專業(yè)班級信息管理與信息系統(tǒng)091班指導(dǎo)教師完成日期2011年12月31-2011年1月12日目 錄一、綜合訓(xùn)練目的與要求1二、綜合訓(xùn)練任務(wù)1三、總體設(shè)計1四、詳細設(shè)計說明4(一)界面設(shè)計:4(二)添加動作監(jiān)聽事件:4(三)、表達式求值:5(四)進制轉(zhuǎn)換:5(五)左右移位:6(六)邏輯與或非異或:6五、調(diào)試與測試71.標準計算器界面:72.科學(xué)計算器界面:73.表達式求值測試:7六、實習日志11七、實習總結(jié)12八、附錄:核心代碼清單131.表達式求值代碼:132.進制轉(zhuǎn)化代碼:163.移位代碼:224.邏輯與或非異或代碼:

2、23附錄1:主界面設(shè)計:28一、綜合訓(xùn)練目的與要求1.鞏固和加深對課堂所學(xué)知識的理解與應(yīng)用;2.學(xué)習掌握一般的軟件的設(shè)計方法和查閱、運用資料的能力;3.掌握java程序設(shè)計語言,面向?qū)ο蟮能浖O(shè)計思想、方法。二、綜合訓(xùn)練任務(wù)1.設(shè)計一個簡易的計算器;功能要求:能實現(xiàn)基本的加、減、乘、除運算,以及表達式計算(加減乘除括號負號);二、八、十、十六進制間的相互轉(zhuǎn)化,帶符號的左移右移;邏輯與或非異或的運算;其他功能:開方、求倒數(shù)、化百分數(shù)、求平方、 求立方、求x的y次方、求階乘、取余、取整(取小數(shù)點之前的)、求常用對數(shù)、求三角函數(shù);界面簡潔適用。2.設(shè)計任務(wù)要完成設(shè)計、編碼、測試等過程,給出設(shè)計思路、

3、主要的代碼及其說明。3.整個過程要體現(xiàn)面向?qū)ο蟮乃枷?。三、總體設(shè)計開始主界面輸入運算數(shù)據(jù)運算符號結(jié)果輸出繼續(xù)簡易計算器總設(shè)計圖 圖1功能結(jié)構(gòu)圖 圖2計算器表達式計算進制間相互轉(zhuǎn)換左右移 位與或非異或運算其他基本功能求倒數(shù)化百分數(shù)求階乘取余、取整平方、立方、開方求對數(shù)、求指數(shù)求三角函數(shù)主界面設(shè)計圖 (見附錄1 )用戶點擊按鈕或鍵盤輸入觸發(fā)事件文本框接收文本框顯示結(jié)果調(diào)用計算函數(shù)表達式不合法時提醒運算流程圖 圖3將字符串表達式,正確拆分放入input數(shù)組,遍歷input數(shù)組左括號直接入棧判斷是運算符還是數(shù)值數(shù)值直接放入第二個數(shù)組獲取合法表達式,計算開始右括號來了,while循環(huán)判斷,如果棧頂不是左

4、括號,將棧頂元素出棧放入第二個數(shù)組;如果棧頂是左括號了,直接將其出棧如果是+-*/運算符采用while循環(huán),如果棧不空,且棧頂元素優(yōu)先級高于當前數(shù)組元素中對應(yīng)運算符號的優(yōu)先級,同時棧頂不是左括號,則將棧頂元素出棧放入第二個數(shù)組中最后遍歷第二個數(shù)組,如果是數(shù)字,直接入棧,遇到運算符號,出棧兩個數(shù),用第二次出來的作為第一操作數(shù),先出來的作為第二操作數(shù),運算完成后入棧,繼續(xù)循環(huán)最后如果棧中還有元素,將其出棧放入第二個數(shù)組,然后將棧清空post第二個數(shù)組stack 棧判斷棧是否空如果棧空,則將inputi元素入棧post第二個數(shù)組最后返回運算結(jié)果stack 棧(被清空的)表達式運算過程圖 4四、詳細設(shè)

5、計說明(一)界面設(shè)計:1.先將窗體分為兩大塊,添加菜單欄,在菜單欄中添加菜單,在菜單中添加菜單項;均以數(shù)組的形式添加;2.第二塊添加文本顯示框于窗體北部,令添加一個面板jp于窗體中心,將這個面板布局為邊界布局管理器,分為上下兩部分,上部分jpup添加到該面板北部,下部分jpdown添加到j(luò)p面板中心;3.將jpup面板布局為一行兩列的網(wǎng)格布局管理器,在左邊添加面板jp1,在右邊添加面板jp2,jp1面板中放四個按鈕,分別為四種進制,用來控制進制轉(zhuǎn)換。jp2面板中放七個按鈕,分別為三個控制角度弧度梯度轉(zhuǎn)換的,四字、雙字、單字、字節(jié)按鈕,控制輸入的二進制位數(shù);4.將jpdown面板布局為一行兩列的

6、網(wǎng)格布局管理器。將jp3面板和jp4面板分別添加進去。jp3和jp4面板均設(shè)為邊界布局管理器。5.將jp5面板和jp6面板分別加入jp3面板的北部和中部;jp5面板中放兩個復(fù)選框和兩個文本框(做填充效果,不可編輯);6.將jp6面板布局為五行五列的網(wǎng)格布局管理器,以數(shù)組的方式添加25個按鈕jb1i = new jbutton(s1i);7.將jp7和jp8分別添加到j(luò)p4面板的北部和中部,jp7面板里添加四個按鈕,第一個是用來做填充效果的按鈕,其余三個分別是(back)退格、(ce)清除、(c)清除。8.將jp8面板布局為五行六列的網(wǎng)格布局管理器,以數(shù)組的方式添加25個按鈕jb2i = new

7、 jbutton(s2i)。(二)添加動作監(jiān)聽事件:1.對菜單添加事件:當點擊三個菜單(編輯、查看、幫助),會顯示對應(yīng)的下拉菜單;當點擊編輯菜單中的復(fù)制時,條用copy函數(shù);當點擊編輯菜單中的粘貼時,調(diào)用paste函數(shù);當點擊查看菜單中的標準從科學(xué)計算器回到簡易計算器界面,此實現(xiàn)時通過隱藏jpup面板和jp3面板,然后調(diào)整窗體大小,即可實現(xiàn)面板收起的效果。當點擊科學(xué)的時候又回到科學(xué)計算器界面。當點擊菜單中的進制按鈕時,某種進制中沒有的數(shù)值將被屏蔽掉。當點擊幫助時會看到關(guān)于計算器,此時點擊會彈出關(guān)于記事本的幫助文檔。2.對按鈕添加事件:設(shè)置一個全局變量append,判斷是追加(true)還是替換

8、(false);對于數(shù)字鍵,采用字符串中的indexof函數(shù),如果點擊的按鈕值能在“0123456789”中找到,則有對應(yīng)位置返回值,如果找不到,則返回值為-1;當點擊小數(shù)點時,判斷文本框中的最后一位是不是小數(shù)點,如果是,截取掉,如果不是添加一個小數(shù)點;當點擊正負號時,判斷文本框中的最后一位是不是負號,如果是,截取掉,如果不是添加一個負號;當點擊加減乘除運算符號時,可追加;當點擊等號時顯示表達式結(jié)果,并且將全局變量置為false,此時輸入只能替換。3.對左半邊按鈕添加事件:當點擊正弦、余弦、正切按鈕時,調(diào)用math類里面的正弦、余弦、正切函數(shù);當點擊求平方、立方按鈕(點擊后append置為fa

9、lse)時,將文本框里的字符串轉(zhuǎn)換為double型,進行平方、立方,重設(shè)為文本框內(nèi)容;當點擊求倒數(shù)按鈕時,先判斷其是不是0,是0不能求倒數(shù),如果是1,倒數(shù)直接置為1,如果不是0或1,則轉(zhuǎn)為double值,用1除以該值。當點擊求階乘的按鈕時,獲取文本,調(diào)用convert類中的求階乘的函數(shù);當點擊pi或e是文本框里顯示圓周率或自然指數(shù)e的值;當點擊log或ln時,調(diào)用math里面的對應(yīng)函數(shù);當點擊左移或右移時,append被置為false,等待輸入左移或右移的位數(shù),當點擊了等號后,調(diào)用convert類里的左移或右移函數(shù);設(shè)置一個全局變量prestatu,默認值為1,代表10進制,0代表十六進制,2

10、代表八進制,3代表二進制,當點擊某種進制按鈕時,如果文本框不空,會將文本框里的字符串做相應(yīng)處理,在根據(jù)prestatu的值確定從哪個狀態(tài)裝換為此進制,調(diào)用convert類里對應(yīng)的進制裝換函數(shù),做完后將prestatu的狀態(tài)值改為當前狀態(tài)值,作為下一次判斷從哪種進制向哪種進制轉(zhuǎn)換的依據(jù);當點擊求x的y次方按鈕時,此時輸入替換第一操作數(shù),點擊等號后,調(diào)用math類里的pow函數(shù);4.對右半邊按鈕添加事件:當點擊數(shù)字按鈕或加減乘除及括號正負號按鈕,本系統(tǒng)將判斷其是否合法,若合法,在點擊等號后調(diào)用compute類的計算函數(shù),計算完成后,將值傳回,替換表達式;當點擊mod(取余)時等待輸入的第二參數(shù)將替

11、換第一參數(shù),點擊等號后,調(diào)用biginteger類里的mod函數(shù),顯示余數(shù);當點擊int時將文本框里的小數(shù)點后的字符串省略掉,達到取整的效果。(三)、表達式求值:將文本框中的合法的表達式(此時是字符串)傳入calculate函數(shù);當表達式字符串傳進來之后,先正確拆分表達式(如3.5要作為一個操作數(shù)一起拆出來)存儲于input數(shù)組中。這個拆分主要是利用string類里的substring函數(shù),以運算符為邊界,當發(fā)現(xiàn)運算符時,截取該位與上一個運算符之間的數(shù)作為一個操作數(shù),同時截取該操作符。正確截取結(jié)束后,遍歷input數(shù)組,若是數(shù)字,直接進入post數(shù)組。若是左括號直接入棧。若是右括號,采用whi

12、le循環(huán)判斷棧頂是不是左括號,如果不是,將棧頂元素出棧放入post數(shù)組中,如過棧頂是左括號,則直接出棧。如果是加減乘除,先判斷棧是否空,如果??談t直接入棧,采用while循環(huán)判斷,如果棧不空且棧頂元素優(yōu)先級高于當前inputi的優(yōu)先級且棧頂不是左括號時,將棧頂元素出棧放入post數(shù)組中,當while循環(huán)條件不成立時,直接入棧。(四)進制轉(zhuǎn)換:通過一組單選按鈕控制進制間的轉(zhuǎn)換,轉(zhuǎn)換思路:二進制、八進制、十六進制向十進制轉(zhuǎn)換時調(diào)用我寫的函數(shù)xtod(string s,int n),s為要轉(zhuǎn)化的數(shù),n 代表從n進制轉(zhuǎn)換為十進制。采用for循環(huán)遍歷s字符串,每次從后截取字符串的每一位,判斷是不是十六進

13、制中的特殊字母,如果是換為對應(yīng)的數(shù)值與math.pow(n,i)相乘,如果不是則使用integer.parseint(s)將截取的元素換為int型與math.pow(n,i)相乘;在函數(shù)開始設(shè)置一個變量sum,在for循環(huán)內(nèi)部設(shè)置臨時變量a存儲每次的結(jié)果,循環(huán)一次執(zhí)行一次sum=sum+a;最后for循環(huán)結(jié)束后,將sum轉(zhuǎn)換為字符串傳回。當十進制想其他進制轉(zhuǎn)換時,調(diào)用相應(yīng)的函數(shù)。轉(zhuǎn)換思路:先判斷這個數(shù)與要轉(zhuǎn)化的基數(shù),如果小于基數(shù),直接保存起來,如果不是,設(shè)置一個變量記錄除的次數(shù)s,用while循環(huán)判斷概述如果大于等于基數(shù),則用它除以基數(shù),s+,循環(huán)結(jié)束之后創(chuàng)建數(shù)組長度為s的數(shù)組,用來存放余數(shù)。

14、最后倒序遍歷數(shù)組,鏈接成字符串返回。(五)左右移位:左移位:,有符號的移位操作 右移操作是將運算數(shù)的二進制碼整體右移指定位數(shù),右移之后的空位用符號位補充,如果是正數(shù)用0補充,負數(shù)用1補充。對于左移:先以要移位的字符串長度創(chuàng)建一個string型數(shù)組,我令數(shù)組長度為length,然后根據(jù)移位的位數(shù)n,采用for循環(huán)將原字符串的前l(fā)ength-n位循環(huán)拷貝到新建的數(shù)組的前l(fā)ength-n位,在剩余的數(shù)組位置添加0。最后遍歷數(shù)組,連接字符串返回。對于右移:先以要移位的字符串長度創(chuàng)建一個string型數(shù)組,我令數(shù)組長度為length,先判斷第一位是1還是0,如果是1,采用for循環(huán),當i是小于要右移的位

15、數(shù)時,則在新建的數(shù)組中填1;當i大于等于要右移的位數(shù)時,則截取原字符串的前n位填入新建數(shù)組的后length-n位中。如果第一位是0,則在前n為填0,其他一樣。(六)邏輯與或非異或:比較兩個字符串的每一位,或運算:若有一個是1,則或運算為1,否則為0;與運算:若有一個為0,則為0,否則為1;異或運算:若兩個字符串對應(yīng)位不同,則為1,否則為0;取反運算,將0換為1,將1換為0;以上這些均在for循環(huán)中進行,每次循環(huán)都會更新結(jié)果字符串,最后將結(jié)果字符串返回。當然在進行與運算前,考慮兩個字符串長度,把左邊多出來的部分舍棄,因為多出來的部分相當于與0對齊。(其實,嚴格來說,應(yīng)該按照機器中二進制表示的位數(shù)

16、來確定的);對于或運算和異或運算前,也要考慮字符串長度。將多出來的部分進行循環(huán)遍歷,如果是0則在結(jié)果字符串中加上0;如果是1則在結(jié)果字符串中加1;因為1或0運算是1,1異或0運算時1,0或0,0異或0都是0.五、調(diào)試與測試1.標準計算器界面:點擊查看菜單中的標準即可跳轉(zhuǎn)到此界面。2.科學(xué)計算器界面:點擊查看菜單中的科學(xué)即可跳轉(zhuǎn)到此界面。3.表達式求值測試:用戶用鼠標點擊按鈕或鍵盤輸入表達式,點擊等號后,會驗證表達式是否合法,如果不合法會提醒用戶檢查修改;如果合法則計算后用結(jié)果替代表達式。結(jié)果顯示:表達式測試2:表達式中有負號時,用正負號或減號都可以。結(jié)果顯示:表達式求值測試2:表達式中有小數(shù)的

17、結(jié)果顯示:表達式測試3:結(jié)果顯示:表達式驗證:進制轉(zhuǎn)化測試:十進制轉(zhuǎn)化為八進制八進制轉(zhuǎn)換為二進制:二進制轉(zhuǎn)換十六進制:四種進制之間的相互轉(zhuǎn)換均已實現(xiàn)。本系統(tǒng)的缺陷是:對于小數(shù)不能實現(xiàn)進制轉(zhuǎn)換。沒有實現(xiàn)科學(xué)計算器的統(tǒng)計功能。左右移位、與或非異或運算也實現(xiàn)了,但是沒有考慮機器中二進制的表示位數(shù)。六、實習日志2011年12月31日:分析題目,確定要實現(xiàn)的功能:表達式求值,進制間的相互轉(zhuǎn)換,帶符號的左移和右移,及其一些輔助功能,選擇使用語言,完成實習任務(wù)書。2012年1月3日:敲代碼,實現(xiàn)科學(xué)計算器主界面,并且添加部分事件,實現(xiàn)控制一些按鈕不可用,實現(xiàn)按鈕的不同顏色。凡事只要耐心點,再難的事,也會變得

18、簡單。通過查看jdk資料,及自己多多思考練習,終于完成了今日功能。2012年1月4日:添加進制按鈕事件,控制不同進制的非法數(shù)字不可用,添加清除按鈕事件;添加正弦、余弦、正切、求倒數(shù)、求階乘、求百分數(shù)、取整、取余、求平方、求立方、求對數(shù)、求指數(shù)等事件。今天的實習中發(fā)現(xiàn)有很多細節(jié)性問題,所以要養(yǎng)成良好的習慣。細節(jié)決定成敗,態(tài)度決定一切。只要我耐心,就會成功。2012年1月5日:添加表達式按鈕事件及等號事件,完成表達式運算函數(shù)。這是此次實習最重要的部分,所以花費了很多時間,也遇到了各種各樣的問題,不過經(jīng)過我的仔細分析,不斷調(diào)整代碼,最終將表達式求值實現(xiàn)。遇到問題,絕不退縮,迎難而上。2012年1月6

19、日:今天發(fā)現(xiàn)表達式中以括號開始的表達式有問題,經(jīng)過研究,發(fā)現(xiàn)是在拆分表達式時,當i=0時,截取了兩次括號,導(dǎo)致錯誤,因此對于判斷條件添加一個i!=0時才執(zhí)行。2012年1月8日:對于以負數(shù)開始的表達式計算有問題,經(jīng)過研究,當遍歷到的是負號時,添加一個判斷語句,如果i=0,且inputi+1匹配到double型數(shù)或者int型數(shù)字時,先向post數(shù)組放入一個0,然后繼續(xù)向下走。對于表達式中間出現(xiàn)的負數(shù),則先判斷負號前面是左括號,后面是double型數(shù)或者int型數(shù)即可先在post數(shù)組里放一個0,再繼續(xù)往下走。212年1月9日:實現(xiàn)從十進制向二進制、八進制、十六進制轉(zhuǎn)換的函數(shù)和從二、八、十六進制到十

20、進制轉(zhuǎn)換及其之間的相互轉(zhuǎn)換。這一塊基本算法懂,所以寫時只要注重細節(jié)就可以了。最后開始寫課程論文。2012年1月10日:測試調(diào)試代碼,實現(xiàn)帶符號的左移右移(沒有考慮機器中二進制的表示位數(shù))。完善課程論文。最近發(fā)現(xiàn)自己挺迷戀程序的,當遇到問題沒有解決時,每天走路上想,吃飯時想,睡覺也想,連娛樂都放棄了。不要輕言放棄,一定會有收獲。2012年1月11日:制作答辯ppt,繼續(xù)完善課程論文,測試規(guī)范代碼。思考能否完善或添加新的功能。2012年1月12日:答辯了,實習結(jié)束了,這次的實習代碼完全是自己一字一句的敲出來的,所以還是蠻開心的,而且感覺收獲很大,最重要的是我發(fā)現(xiàn)自己挺喜歡研究程序的,尤其是遇到問題

21、時,總能自己動手畫圖,調(diào)試,添加注釋語句琢磨著解決問題,所以特別開心。七、實習總結(jié)通過為期兩周的緊張實習,我對于面向?qū)ο蟮某绦蛟O(shè)計有了更深刻得了解,對面向?qū)ο蟮乃枷塍w會更深刻。面向?qū)ο蟮奶攸c是抽象、封裝、繼承、多態(tài)性。系統(tǒng)中一切皆為對象;對象是屬性及其操作的封裝體;對象可按其性質(zhì)劃分為類,對象成為類的實例;實例關(guān)系和繼承關(guān)系是對象之間的靜態(tài)關(guān)系;消息傳遞是對象之間動態(tài)聯(lián)系的唯一形式,也是計算的唯一形式;方法是消息的序列。通過這次實習,我對于編寫一個小型軟件有了一定的認識,首先我們要做好需求分析,分析我們要做什么軟件,給哪些人用,從他們的角度考慮,有什么特殊需要。分析清楚需求,著手設(shè)計,看有哪些

22、功能,分幾塊做;將每一塊封裝成一個類,然后設(shè)計類,分析用到的屬性,方法,考慮他們的修飾符,訪問權(quán)限等。然后還要考慮用到哪些算法,盡量都將他們封裝起來,這樣可以方便代碼重用。有了一個詳細的規(guī)劃后,開始著手一步一步敲代碼,當然要視情況而改變一些策略。這次實習思路明確,在做好需求之后,有了一個規(guī)劃,確定了要實現(xiàn)的功能,開始完成每一塊的代碼,并進行測試,最后對整體代碼進行測試調(diào)整。實習過程中遇到很多問題,因為我做的是計算器,并且用的是java語言,然后老師都說他們java忘了,那我只能自己動手解決了。所以,剛開始很笨,就不停地畫表達式計算的過程圖,然后發(fā)現(xiàn)了問題,并解決了問題,結(jié)果一個本子畫完了,發(fā)現(xiàn)

23、自己好笨。到下次遇到問題,我就添加一些打印語句,然后很快發(fā)現(xiàn)了問題的所在處,也順利的解決了問題,這樣就高效多了。所以說通過這次實習我真正的學(xué)會了調(diào)代碼,而且我也不再怕遇到錯了,因為當我自己將錯誤解決的時候很高興,同時我還幫助其他同學(xué)解決了很多問題,當然也從一些同學(xué)那里學(xué)到好多東西。這次實習的缺憾就是,我沒有學(xué)習qt、mfc的知識,通過和其他同學(xué)的交流,以及看他們所作的東西,我挺感興趣的,所以我下載好了資料,電腦上也裝好了數(shù)據(jù)庫,回家后自己繼續(xù)學(xué)習,多做幾個題目,好好練一練。我覺得這個實習特別有意思,大家一起做,不會了交流一下,能學(xué)到好多東西。珍惜這種學(xué)習機會,下學(xué)期就剩下一次了。通過這次實習,

24、我發(fā)現(xiàn)其實再簡單的東西要動手做也挺難得,但是只要認真做認真分析其實也挺簡單的。世上無難事,只怕有心人。都說信管的編程能力弱,其實都是我們在逃避,我們要有探索和征服的精神,只有這樣你才會有繼續(xù)前進的動力。充實的實習生活結(jié)束了,回家好好充充電,下學(xué)期更加美好。八、附錄:核心代碼清單1.表達式求值代碼:import java.util.stack;public class jisuan private string expression;/表達式final static int n = 100;/存放表達式的數(shù)組最大長度public string getexpression() return exp

25、ression; public void setexpression(string expression) this.expression = expression; public jisuan(string expression) this.setexpression(expression); /優(yōu)先級比較 private int com(string x) if (x.equals(*) | x.equals(/) return 2; if (x.equals(+) | x.equals(-) return 1; else return -1; /算術(shù)表達式求值 public double

26、 calculate() string example = new string()+*/-); string input = new stringn;/存放合法的正確拆分的表達式 string post = new stringn;/存放取除括號的表達式 / string expression = (3.5+6)*(45/38-12); int n = expression.length(); int count = 0; int pre = -1; for (int i = 0; i n; i+) if (example.indexof(expression.charat(i) != -1

27、) if (pre != -1 & i != pre) inputcount+ = expression.substring(pre, i); /system.out.println(inputcount); if (pre = -1&i!=0) inputcount+ = expression.substring(0, i); /system.out.println(inputcount); inputcount+ = expression.substring(i, i + 1); /system.out.println(inputcount); pre = i + 1; /* *pre -

28、1 1 4 5 7 8 9 12 15 *i 0 1 4 6 7 8 11 14 17 */ for(int i=0;icount;i+) system.out.print(inputi); if (pre n) if (pre = -1) inputcount+ = expression.substring(0, n); else inputcount+ = expression.substring(pre, n); / for(int i=0;icount;i+)/ system.out.println(inputi+ );/ stack s = new stack(); int j =

29、0; for (int i = 0; i =1&inputi-1.equals()&inputi.equals(-)&inputi+1.matches(d*.d*)|d$) postj+ = 0; system.out.println(*6); if (s.empty() s.push(inputi); system.out.println(*7); else while (!s.empty() & com(s.peek() = com(inputi) & (!s.peek().equals() postj+ = s.pop(); system.out.println(*8); s.push(

30、inputi); system.out.println(*9); while (!s.empty() postj+ = s.pop(); for(int i=0;ij;i+) system.out.print(posti+ ); s.clear(); int m = j; for (int i = 0; i m; i+) if (posti.equals(+) double d = double.parsedouble(s.pop(); s.push(string.valueof(double.parsedouble(s.pop() + d); else if (posti.equals(-)

31、 double d = double.parsedouble(s.pop(); s.push(string.valueof(double.parsedouble(s.pop() - d); else if (posti.equals(*) double d = double.parsedouble(s.pop(); s.push(string.valueof(double.parsedouble(s.pop() * d); else if (posti.equals(/) double d = double.parsedouble(s.pop(); s.push(string.valueof(

32、double.parsedouble(s.pop() / d); else s.push(posti); double result = double.parsedouble(s.pop(); return result; 2.進制轉(zhuǎn)化代碼:public class zhuanhuan private string str;/從某種進制向某種進制轉(zhuǎn)換的字符串private int n;/從d進制向十進制轉(zhuǎn)換或者表示左移右移的位數(shù)public int getn() return n;public void setn(int n) /if(n=2|n=8|n=16) this.n = n;/els

33、e /system.out.println(不合法的進制);/public string getstr() return str;public void setstr(string x) this.str = x;public zhuanhuan(string x)this.setstr(x);public zhuanhuan(string x,int d)this.setstr(x);this.setn(d);/* * 十進制轉(zhuǎn)換為二進制 */public string dtob() int d = integer.parseint(str); string b = ; if (d = 2)

34、 s+; n = n / 2; int m = new ints; int i = 0; do c = d / 2; mi+ = d % 2; d = c; while (c = 2); b = d+; for (int j = m.length - 1; j =0; j-) b += mj+; return b; /* * 十進制轉(zhuǎn)換為八進制 */ public string dtoo() int d = integer.parseint(str); string o = ; if (d = 8) s+; n = n / 8; int m = new ints; int i = 0; do

35、c = d / 8; mi+ = d % 8; d = c; while (c = 8); o = d+; for (int j = m.length - 1; j = 0; j-) o += mj; return o; /* * 十進制轉(zhuǎn)換為十六進制 */ public string dtoh() int d = integer.parseint(str); string x = ; if (d = 16) s+; n = n / 16; string m = new strings; int i = 0; do c = d / 16; mi+ = chang(d % 16); d = c;

36、 while (c = 16); x = chang(d); for (int j = m.length - 1; j = 0; j-) x += mj; return x; /* * 替換特殊的十六進制 */ public string chang(int d) string x = ; switch (d) case 10: x = a; break; case 11: x = b; break; case 12: x = c; break; case 13: x = d; break; case 14: x = e; break; case 15: x = f; break; defau

37、lt: x = d+; break; return x; /* *求階乘函數(shù) * */public long jiecheng() int d = integer.parseint(str);if(d=0)return 1;else long y=1; for(int i=1;i=d;i+) y=y*i; return y; /* * 將二進制或八進制或十六進制轉(zhuǎn)化成十進制 */public string xtod()/n 為 2,8,16string st = ;int sum = 0;for(int i=0;istr.length();i+)string s = str.substring

38、(str.length()-1-i,str.length()-i);if(a.equals(s)int a = (int) (int) 10*math.pow(n, i); sum = a+sum;else if(b.equals(s)int a = (int) (int) 11*math.pow(n, i); sum = a+sum;else if(c.equals(s)int a = (int) (int) 12*math.pow(n, i); sum = a+sum; else if(d.equals(s) int a = (int) (int) 13*math.pow(n, i); sum = a+sum; else if(e.equals(s) int a = (int) (int) 14*math.pow(n, i); sum = a+sum; else if(f.equals(s) int a = (int) (int) 15*math.pow(n, i); sum = a+sum; else int a = (int) (integer.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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

提交評論