計算器製作JAVA版(綜述)
實在是不好意思,也不知道前一段時間在忙些什麼,映象中就是吃飯和睡覺了,不知不覺就已經開學過了兩個星期了 。記得第一週老師要求了一個作業--編寫計算器,身為班級一員有必要給大家解析一下這個題目。而且個人感覺作為一個學生給人講程式、講演算法,不僅僅是共享一下程式碼就算完了,而是要引導大家去解決這個問題。更多的是提供現階段廣大同學的知識水平和編碼水平相適應的解題報告。不過,我不太喜歡什麼上來就是做題啊,解題啊的,所以以後更多的會用技術討論性的詞句了。好了,閒話說了這個多了,開始進入正題吧。
當我們面對這樣一個看似簡單,越想越複雜的題目時,得通過逐步分塊逐步求精的思路方法。一般我們看到這個題目時候會逐步想起哪些東西呢?我不知道大家的想法,我的思路是這樣亂成一團的:一個計算器就是計算一個表示式嘛,一個一個計算就好了;不對,因為加減乘除的優先順序問題,又得優先計算乘除法;然後呢,好像還有括號吧,那又優先計算括號裡面的內容了,括號裡面又是一個形如前面的形式,咋成了一個遞迴定義的無限了呢!而且我們還沒有考慮什麼乘方啊,三角函式、算式中間有一些非法符號、括號不匹配什麼的。這種情況下,就得趕快停下來,不能一口吃個胖子吧。記得高中資訊學奧賽的時候就是栽在這道題上的。
那麼下面幾篇文章就會一步一步來解讀這個程式。
我用三塊來將程式劃分開。
首先,我們知道需要計算一個表示式就得保證這個表示式中沒有非法字元 像什麼空格呀、縮排符等等。
其次,我們要保證表示式結構的正確性,主要是括號匹配、運算子、運算元(其實就是數字,那些學者就會用專業詞彙嚇唬人。)的位置正確性。
最後,才是計算表示式。
注意:我們的注意力應該在處理表示式的問題上面,所以大家不要為那些GUI介面和外圍裝置投入大量精力,沒有什麼意義。網上大部分採用的是字尾表示式求值等類似方法,既然大家沒學,我們不會採用這種方法解答;另外有些同學聽到一些新的名詞--棧,就覺得很難,其實沒有,在隨後的解析過程中,我們會發現,這種資料結構會因為解答本程式的需要,會自己浮現到我們面前,所以不用擔心;再則是,要學會自己想辦法,在隨後的文章中,大家會發現,只要是懂得基本的程式設計規則,解決這個問題是沒有困難的(要不然我們高中那會沒有這麼多專業術語,咋搞啊)。
補充兩句,如果有哪些地方可以加評論詢問,本人表達能力有限所以這個學期選個語文好好補補。並且我發現如果無法將自己所學的知識表達出來並且讓他人聽懂是不算一個好學生的。
當我們面對這樣一個看似簡單,越想越複雜的題目時,得通過逐步分塊逐步求精的思路方法。一般我們看到這個題目時候會逐步想起哪些東西呢?我不知道大家的想法,我的思路是這樣亂成一團的:一個計算器就是計算一個表示式嘛,一個一個計算就好了;不對,因為加減乘除的優先順序問題,又得優先計算乘除法;然後呢,好像還有括號吧,那又優先計算括號裡面的內容了,括號裡面又是一個形如前面的形式,咋成了一個遞迴定義的無限了呢!而且我們還沒有考慮什麼乘方啊,三角函式、算式中間有一些非法符號、括號不匹配什麼的。這種情況下,就得趕快停下來,不能一口吃個胖子吧。記得高中資訊學奧賽的時候就是栽在這道題上的。
那麼下面幾篇文章就會一步一步來解讀這個程式。
我用三塊來將程式劃分開。
首先,我們知道需要計算一個表示式就得保證這個表示式中沒有非法字元 像什麼空格呀、縮排符等等。
其次,我們要保證表示式結構的正確性,主要是括號匹配、運算子、運算元(其實就是數字,那些學者就會用專業詞彙嚇唬人。)的位置正確性。
最後,才是計算表示式。
注意:我們的注意力應該在處理表示式的問題上面,所以大家不要為那些GUI介面和外圍裝置投入大量精力,沒有什麼意義。網上大部分採用的是字尾表示式求值等類似方法,既然大家沒學,我們不會採用這種方法解答;另外有些同學聽到一些新的名詞--棧,就覺得很難,其實沒有,在隨後的解析過程中,我們會發現,這種資料結構會因為解答本程式的需要,會自己浮現到我們面前,所以不用擔心;再則是,要學會自己想辦法,在隨後的文章中,大家會發現,只要是懂得基本的程式設計規則,解決這個問題是沒有困難的(要不然我們高中那會沒有這麼多專業術語,咋搞啊)。
補充兩句,如果有哪些地方可以加評論詢問,本人表達能力有限所以這個學期選個語文好好補補。並且我發現如果無法將自己所學的知識表達出來並且讓他人聽懂是不算一個好學生的。
相關文章
- 隱私計算綜述閱讀
- 計算機視覺入門系列(一) 綜述計算機視覺
- 資料複製策略綜述
- IOS開發 製作簡單的計算器iOS
- 計算廣告系統演算法與架構綜述演算法架構
- html+css+js製作一個簡易計算器HTMLCSSJS
- 對話機器人ChatBot綜述機器人
- Spring綜述Spring
- 李航「機器學習」最全綜述機器學習
- Java 集合框架綜述,這篇讓你吃透!Java框架
- Action Recognition——基於表示的動作識別綜述
- Spring Bean 綜述SpringBean
- API安全綜述API
- 【計項02組01號】Java版圖形介面計算器【1.0】Java
- 類腦計算有望徹底改變計算領域,甚至超越人腦,豐田合作綜述類腦計算的興起
- 視覺SLAM綜述視覺SLAM
- MLsys各方向綜述
- GAN生成影象綜述
- GAN生成影像綜述
- C語言練手專案--C 語言製作簡單計算器C語言
- Action Recognition——基於深度學習的動作識別綜述深度學習
- AutoML研究綜述:讓AI學習設計AITOMLAI
- Android 資料庫綜述(二) 程式計算器與訊號量來處理多執行緒併發問題Android資料庫執行緒
- 自動機器學習:最近進展研究綜述機器學習
- 反諷識別綜述
- 影象檢索(一)--綜述
- 損失函式綜述函式
- 對話系統綜述
- PostgreSQL掃描方法綜述SQL
- 目標檢測綜述
- 製作表格統計函式計算Excel 2021簡體中文函式Excel
- AIGC用於智慧寫作的技術綜述-達觀資料AIGC
- Nature 機器智慧綜述:AI如何自動生成遊戲AI遊戲
- 收藏!機器學習演算法優缺點綜述機器學習演算法
- 聚類演算法綜述聚類演算法
- NLP相關論文綜述
- 蛋白質語言模型綜述模型
- MyBatis 核心配置綜述之StatementHandlerMyBatis
- NP難問題求解綜述