首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 實現四則運算表達式解析計算器

     編輯:程式設計綜合問答

需求

輸入字符串如 `1+2/3+5.4*7.5-8.3`,解析並計算結果。不支持負數運算(如 `-1+2`)。

核心思路:中綴轉後綴 + 棧計算

  1. 詞法分析:掃描字符串,提取數字、運算符(`+ - * /`)、括號。
  2. 中綴轉後綴:使用運算符優先級棧,輸出後綴表達式(逆波蘭表示法)。
  3. 後綴求值:掃描後綴表達式,遇數入棧,遇運算符彈出兩數運算後入棧,最終棧頂為結果。

參考實現

完整代碼參考博客:Java 表達式求值(中綴轉後綴),包含 `Token`、`Parser`、`Calculator` 三類,處理優先級、括號、空白字符。

關鍵點提示

  • 數字解析需支持浮點數(`Double.parseDouble`)。
  • 運算符優先級:`* /` > `+ -`;左結合。
  • 錯誤處理:除零、非法字符、括號不匹配拋出異常。
  • 擴展:若需支持負數,詞法階段識別一元 `-`(如行首、`(` 後、`運算符` 後)作為負號合併到數字中。

替代方案

引入表達式引擎:AviatorScript、Expression Language (EL)、Janino(動態編譯),一行代碼完成計算,適合生產環境。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved