從0到1實現一個簡單計算器
阿新 • • 發佈:2021-02-07
### 前言
學習程式語言最重要的就是實踐。很多小夥伴在學習完程式語言後,一直停留在基礎階段,只懂一大堆理論知識,而不懂得實踐。那麼,今天我們一起來動手做一個小計算器,回顧下學習過的知識,同時這也是很多大學計算機專業的期末作業,應該嘗試動手並完全理解它,學廢了記得點贊收藏加關注哦。
## 開始動手
**本次實驗會用到Java Swing圖形元件進行開發**
>主要知識點
> - Java Swing介面的程式設計
> - 計算器運算邏輯的實現
**一、專案建立**
1. 開啟Eclipse,在檔案的選單File選擇 **New -> Java Project**
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d4d84e776b7e4249935d7b8e8ec22759~tplv-k3u1fbpfcp-zoom-1.image)
2.在**Project name**一欄填寫**專案名稱Calculator(自定義)**,並點選**Finish**按鈕完成建立
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c47f9c265d6a48b99dfb123cbfdb6700~tplv-k3u1fbpfcp-zoom-1.image)
3.建立一個**包package**
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e0bfec439ee14290b44252c424327ada~tplv-k3u1fbpfcp-zoom-1.image)
4.在建立好的專案目錄**src**上右鍵點選,選單中選擇 **New -> Class** 來建立一個類
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7d231ea5bc7a40a08630e0334e8eb528~tplv-k3u1fbpfcp-zoom-1.image)
5.在新建類的對話方塊中填寫類名 **Calculator(自定義)**,點選 **Finish** 按鈕完成建立
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ad96aecbfe184d4a84b0f56b9aef1f65~tplv-k3u1fbpfcp-zoom-1.image)
**二、程式碼部分**
未接觸過Swing的小夥伴可以先去下面的連結學習下入門的基礎知識
**http://c.biancheng.net/swing/**
1.編寫響應邏輯的實現
定義儲存當前被按下的運算元和操作符,result儲存運算的結果
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/75f09dc4a48047428763c249a24386e2~tplv-k3u1fbpfcp-zoom-1.image)
定義狀態開關
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1e39c25831ee4b22bb900e942f48f228~tplv-k3u1fbpfcp-zoom-1.image)
定義JButton變數,儲存按下的鍵,定義一個Vector,儲存所有的輸入
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e6008f9989a44bdd90b0bc029130a724~tplv-k3u1fbpfcp-zoom-1.image)
2. UI元件建立
建立主窗體,按鈕和文字框
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/74a88f9da94542f7ba84fb024167ce9c~tplv-k3u1fbpfcp-zoom-1.image)
3.在構造器中完成等效鍵的設定、UI元件新增進容器、事件處理程式的設計、計算邏輯的實現以及視窗關閉事件的程式碼編寫的工作
> 等效鍵的設定(即可以通過對應的鍵盤按鍵來代替點選它)
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ea9628abc3e24e8d9f73262552e4cda7~tplv-k3u1fbpfcp-zoom-1.image)
> 文字框對齊
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/028c0f657cf14aeeb294e7d3b8b3eeda~tplv-k3u1fbpfcp-zoom-1.image)
> UI元件新增進容器
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/852961fbdf274837adf04bba83fe747c~tplv-k3u1fbpfcp-zoom-1.image)
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6cfdabeb58ae4c6c92d25bbfc8e9eee3~tplv-k3u1fbpfcp-zoom-1.image)
> 事件處理程式
**數字鍵處理邏輯**
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a81f945c14a3489eaa059633ff4c891a~tplv-k3u1fbpfcp-zoom-1.image)
**運算子處理邏輯**
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5757c01454be4e19989cfe4408b80fb0~tplv-k3u1fbpfcp-zoom-1.image)
**清除鍵處理邏輯**
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ba92b4f4c1f1458a8e91741c79284de7~tplv-k3u1fbpfcp-zoom-1.image)
**等於鍵處理邏輯**
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a79e5f86bca44be0922c2c6b3491cea3~tplv-k3u1fbpfcp-zoom-1.image)
**小數點處理邏輯**
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/bb65878574c741ee8ee59eb684a3b01c~tplv-k3u1fbpfcp-zoom-1.image)
**註冊監聽器**
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0313b5d8d1b24132add25f99a1684ef0~tplv-k3u1fbpfcp-zoom-1.image)
**視窗關閉**
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4f8bf1c2e8a840adbe9030f5d1b780ba~tplv-k3u1fbpfcp-zoom-1.image)
**計算邏輯**
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9c3a0b41bd194ecbb268a369faf009cb~tplv-k3u1fbpfcp-zoom-1.image)
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a0a356775bc344779a73f5c1df0ff720~tplv-k3u1fbpfcp-zoom-1.image)
**三、執行專案**
實現效果如下
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/273e753a3c1c484faf0386a7bcab85bf~tplv-k3u1fbpfcp-zoom-1.image)
**四、專案總結**
本次實踐練習如何使用Swing進行圖形介面的程式設計以及一些計算邏輯的實現,也只是實現了基本的計算器功能的實現,感興趣的可以自己動手加一點東西,比如運算子優先順序的實現(需要資料結構的實現),進一步提高思考和程式設計的能力。
本次專案的原始碼已編寫打包好。 公眾號 **CodeVald** 後臺回覆 **計算器** 即可領取。
**有收穫的小夥伴記得點贊收藏加關注哦。筆