亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > 幫助中心 > 正文

使用java處理字符串公式運算的方法

2024-07-09 22:47:52
字體:
來源:轉載
供稿:網友

  在改進一個關于合同的項目時,有個需求,就是由于合同中非數據項的計算公式會根據年份而進行變更,而之前是將公式硬編碼到系統中的,只要時間一變,系統就沒法使用了,因此要求合同中各個非基礎數據的項都能自定義公式,根據設置的公式來自動生成報表和合同中的數據。

  顯然定義的公式都是以字符串來存儲到數據庫的,可是java中沒有這種執行字符串公式的工具或者類,而且是公式可以嵌套一個中間公式。比如:基礎數據dddd是56,而一個公式是依賴dddd的,eeee=dddd*20,而最終的公式可能是這樣:eeee*-12+13-dddd+24??芍猠eee是一個中間公式,所以一個公式的計算需要知道中間公式和基礎數據。

這好像可以使用一個解釋器模式來解決,但是我沒有成功,因為括號的優先級是一個棘手的問題,后來又想到可以使用freemarker類似的模板引擎或者java6之后提供的ScriptEngine 腳本引擎,做了個實驗,腳本引擎可以解決,但是這限制了必須使用java6及以上的版本。最終功夫不負有心人,終于找到了完美解決方案,即后綴表達式。我們平時寫的公式稱作中綴表達式,計算機處理起來比較困難,所以需要先將中綴表達式轉換成計算機處理起來比較容易的后綴表達式。

將中綴表達式轉換為后綴表達式具體算法規則:見后綴表達式


   a.若為 '(',入棧;

   b.若為 ')',則依次把棧中的的運算符加入后綴表達式中,直到出現'(',從棧中刪除'(' ;

   c.若為 除括號外的其他運算符 ,當其優先級高于棧頂運算符時,直接入棧。否則從棧頂開始,依次彈出比當前處理的運算符優先級高和優先級相等的運算符,直到一個比它優先級低的或者遇到了一個左括號為止。

   ·當掃描的中綴表達式結束時,棧中的的所有運算符出棧; 

我們提出的要求設想是這樣的:

復制代碼 代碼如下:

public class FormulaTest {
     @Test
     public void testFormula() {
         //基礎數據
         Map<String, BigDecimal> values = new HashMap<String, BigDecimal>();
         values.put("dddd", BigDecimal.valueOf(56d));

         //需要依賴的其他公式
         Map<String, String> formulas = new HashMap<String, String>();
         formulas.put("eeee", "#{dddd}*20");

         //需要計算的公式
         String expression = "#{eeee}*-12+13-#{dddd}+24";
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
超碰91人人草人人干| 国产精品白丝jk喷水视频一区| 最近2019年日本中文免费字幕| 成人激情视频在线| 亚洲精品国产suv| 欧美国产欧美亚洲国产日韩mv天天看完整| 日韩电视剧在线观看免费网站| 欧美一乱一性一交一视频| 一区二区三区在线播放欧美| 国产精品69av| 欧美日韩在线观看视频小说| 国产成人在线亚洲欧美| 日韩三级影视基地| 欧美在线不卡区| 在线观看日韩av| 亚洲美女视频网站| 亚洲小视频在线观看| 亚洲国产日韩欧美在线99| 久久的精品视频| 日韩视频亚洲视频| 日韩欧美在线第一页| 国产小视频国产精品| 日韩成人久久久| 91精品国产高清久久久久久| 中文字幕亚洲欧美日韩2019| 欧美日韩国产限制| 欧美精品一二区| 精品视频—区二区三区免费| 97免费视频在线| 国产偷国产偷亚洲清高网站| 成人有码视频在线播放| 色婷婷久久一区二区| 国产精品久久9| 91理论片午午论夜理片久久| 2019日本中文字幕| 福利精品视频在线| 日韩av在线免费| 久久精品视频免费播放| www.日韩.com| 成人福利免费观看| 红桃视频成人在线观看| 免费91在线视频| 亚洲一级黄色片| 久久免费视频这里只有精品| 久久精品视频免费播放| 成人午夜一级二级三级| 国产视频欧美视频| 亚洲男人天天操| 九九九久久久久久| 国内精品久久久久影院 日本资源| 亚洲国产高清福利视频| 亚洲精品自在久久| 国产做受69高潮| 亚洲美女黄色片| 亚洲第一网中文字幕| 国产日产欧美精品| 亚洲日本成人女熟在线观看| 日韩精品一区二区视频| 欧美激情免费视频| 日韩在线观看免费全集电视剧网站| 欧美在线一区二区三区四| 欧美亚洲激情视频| 在线观看欧美成人| 懂色av影视一区二区三区| 精品国偷自产在线视频| 国产成人综合久久| 精品国产乱码久久久久久婷婷| 欧美日韩免费观看中文| 成人国产精品av| 久久精品免费电影| 成人福利网站在线观看| 中文字幕亚洲欧美| 麻豆国产精品va在线观看不卡| 欧美超级免费视 在线| 中文字幕在线看视频国产欧美| 亚洲精品wwwww| 日本中文字幕久久看| 亚洲国产精品久久精品怡红院| 欧美福利小视频| 国产成人亚洲综合91精品| 在线电影欧美日韩一区二区私密| 91po在线观看91精品国产性色| 色妞久久福利网| 92国产精品久久久久首页| 亚洲第一区中文99精品| 亚洲永久免费观看| 一个人看的www久久| 国产成人+综合亚洲+天堂| 日韩黄色av网站| 色妞欧美日韩在线| 成人国产在线激情| 国产精品丝袜久久久久久高清| 一区二区欧美日韩视频| 久久久久九九九九| 精品动漫一区二区三区| 国产福利视频一区二区| 国产极品jizzhd欧美| 久久亚洲精品小早川怜子66| 精品自拍视频在线观看| 精品欧美aⅴ在线网站| 国产亚洲欧美一区| 亚洲国产99精品国自产| 精品国产一区二区三区久久久| 欧美性xxxxxx| 国产成人综合亚洲| 亚洲一区中文字幕在线观看| www国产精品视频| 高清欧美性猛交xxxx黑人猛交| 91中文在线视频| 亚洲国产天堂网精品网站| 一区二区三区亚洲| 久久免费精品日本久久中文字幕| 日韩大片在线观看视频| 欧美在线视频观看免费网站| 国产精品人成电影在线观看| 韩国19禁主播vip福利视频| 成人国产亚洲精品a区天堂华泰| 欧美资源在线观看| 日韩在线视频网| 亚洲综合成人婷婷小说| 国产成人精品一区二区| 2021久久精品国产99国产精品| 国产精品欧美一区二区| 欧美洲成人男女午夜视频| 夜夜嗨av一区二区三区免费区| 国产成人啪精品视频免费网| 成人国内精品久久久久一区| 丝袜美腿精品国产二区| y97精品国产97久久久久久| 91久久嫩草影院一区二区| 一本色道久久综合狠狠躁篇的优点| 亚洲精品二三区| 91九色视频在线| 欧美激情精品久久久久久黑人| 日韩精品在线观看一区二区| 亚洲精品美女久久久| 国产伦精品免费视频| www.亚洲天堂| 在线看片第一页欧美| 中文亚洲视频在线| 国产精品久久国产精品99gif| 97精品国产91久久久久久| 欧美日韩在线影院| 深夜精品寂寞黄网站在线观看| 91免费电影网站| 中文字幕亚洲综合| 成人黄色影片在线| 曰本色欧美视频在线| 国产精品日韩欧美大师| 国产精品成人av性教育| 欧美亚洲国产日韩2020| 97视频在线免费观看| 91九色视频导航| 欧美日韩国产中文字幕| 日韩精品免费在线观看| 亚洲人成在线一二| 日韩成人av在线播放| 欧美日韩国产在线播放| 欧美午夜激情小视频| 久久久国产精品免费| 欧美在线不卡区| 欧美日韩综合视频网址| 久久资源免费视频| 欧美日韩中国免费专区在线看|