Java實現GUI計算器【代碼】


這幾天用java寫了一個計算器程序,開始寫的時候原本只是想實現一下GUI(這個是直接讀三個字母還是什么“固椅”的發音)界面,熟悉一下Java GUI 編程,為Java期末大作業練練手,本以為代碼不會很長,結果寫完下來發現到了驚人的千行數量級,我分析了一下,主要是在實現監聽器的時候花了很大篇幅,主體程序應該會短不少。整個程序分為三個.java文件,分別為 Calculator.java EvaluateExpression.java Arith.java ,程序已放到Github上去了(https://github.com/JiaxinTse),首先是用戶在界面上輸入,然后輸入完得到一個字符串,在用戶按下等於號的時候把這個字符串傳給EvaluateExpression.java里的一個中綴表達式求值函數,計算出結果,在傳入表達式之前要對表達式進行括號匹配分析,由於計算器精度需要,又考慮到java中double型數據運算存在的潛在誤差,於是重新實現了浮點數的加減乘除運算,原因是我遇到了這樣一個問題(http://blog.csdn.net/jackiehff/article/details/8582449 )

程序花了很大篇幅阻止用戶的非法輸入,所以原本可以寫的不是很長的監聽器類最后變得很長,因為我覺得在用戶輸入的時候就盡可能地減少錯誤要比你先讓用戶隨便輸入最后對表達式進行綜合分析要來得簡單,下面簡單列舉一些阻止的非法輸入:

):第一個符號就是右括號

(1+2)3:右括號后面直接接數字,類似的左括號也有這些情況

2.3.4:在一個數字上輸入多個小數點

(*):括號后面直接接運算符

(1+2)*=:等號前面出現了非法符號

1+*2:連續輸入運算符

等等...

這些判斷是在用戶輸入階段進行的,如果判斷為非法,就不做任何處理,反應在程序界面上就是輸入無反應,中綴表達式求值直接利用了我之前寫的一個程序

http://www.cnblogs.com/journal-of-xjx/p/5936448.html),但是由於java中沒有指針,所以改用數組重新定義了棧,這次直接定義了兩個棧,一個是操作數棧,一個是操作符棧,這一次也算是完善了上次那個程序,可以實現了負數和小數的計算了, 所以這次的中綴表達式程序比上次多了不少代碼。

窗體的主要布局如下

 

整個界面模仿Win10自帶的計算器

以下是整個界面各部分組件的布局

以下是彈出對話框的效果

上面的鏈接都是可以打開的哦

寫了三天的時間,有興趣的可以去我的github上看看

 

------------------------------------------------------------第二版更新-----------------------------------------------------------------

1.添加了部分功能

2.界面優化

 

以下是部分更新后的截圖

 

1.啟動程序圖

 

2.關於界面圖

 

3.計算過程圖


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM