標籤:操作 journal 計算機 彈出對話方塊 r.java 匹配 png win10 錯誤
這幾天用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上看看
Java實現GUI計算機【代碼】