亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? readme.txt

?? 計算字符串表達式的計算引擎,可以是任意復雜的字符串表達式
?? TXT
字號:
copyright:黃云輝,huangyh@toone.com.cn

●這是個計算字符串表達式的計算引擎

  功能:給出一個字符串表達式(可以是任意復雜的字符串表達式),計算字符串表達式的值.

  特性: 
        1:用戶可以添加其它運算符號 ,也就是說用戶可以制定新的運算符,引擎中不存在的運算符號,
           當然具體的運算類還是得用戶提供.

        2: 可以修改運算符的性質,你可以使得3*3=6,只要將*的運算類指向expression.DAdd就可以了
           具體如何操作,我會在下面講.

        3:可以使操作符運算具有多種形態。您即可以用“+”表示加法運算,也可以用"加法"表示加法運算.
 

        強調一下: 本引擎的最大特點就是: 用戶可以添加自己的運算符號,而不用修改計算引擎本身.      

  目前支持的運算符號有:

  單目運算符號有:                          對應的運算類       
    sin(double x)//正玄                     expression.SSin
    cos(double x)//余玄                     expression.SCos   
    tan(coule x)//正切                      expression.STan
    n!(double)//正切                        expression.SN
    dao(double)//求倒數                     expression.SDao
    sqrt(double)//開方                      expression.SSqrt
    exp(double)//指數運算                   expression.SExp
    pin(double)//平方                       expression.SX2   
    li (double)//立方                       expression.SX3
    log(double)//e為底的對數                expression.SLog    
    ln(double)//10為底的對數                expression.SLn  

  雙目運算符號:
    (double) ^ (double) //冪運算            expression.DPow
    (double) * (double) //乘法運算          expression.DMul 
    (double) / (double) //除發運算          expression.DDiv
    (double) % (double) //求余數            expression.DMod
    (double) + (double) //加法運算          expression.DAdd
    (doubel) - (double) //減法運算          expression.DDec
    //==================================================================================
   
    怎么樣,運算符夠多的吧!如果您覺得這些運算符號無法滿足您的需求,沒關系,你可以添加您想要的運算   符號.那用戶該如何添加自定義運算符號?又有那些限制?別急,這正是我現在要跟您說的.  

   1:第一步工作: 將expression.jar(計算引擎)添加到運行庫中.
       tools-->configure libraries -->new...-->add-->選擇expression.jar->ok->ok->ok

   2:新建一個運算類
       如果您要實現的操作符屬單目操作符號,請實現SOperator接口,否則實現DOperator接口
       
       /**
        * 定義單目運算符號接口
        * 所有的單目運算符的運算類都必須實現該接口
        * 因為運算數據來自 hashtable,所以我將程序輸入參數設成Object,主要是
        * 方便調用,不過在實現中要多做2件事。
        * 1:將參數轉成double數據,
        * 2:將運算結果轉成 Object類型的.
        */
        public interface SOperator {
          public Object calculate( Object op_num ) throws DataInvalidException;
        }

        /**
         * 定義雙目運算符號接口
         * 所有的雙目運算符的運算類都必須實現該接口
         * 因為運算數據來自 hashtable,所以我將程序輸入參數設成Object,主要是
         * 方便調用,不過在實現中要多做2件事。
         * 1:將參數轉成double數據,
         * 2:將運算結果轉成 Object類型的.
         */
         public interface DOperator {
            public Object calculate( Object op_num1,Object op_num2 ) throws DataInvalidException;
         }
         說明:1. 要將expression 庫函數包含到工程中
              2. 您的寫的運算符實現類必須是public 的,所以每個實現類都必須在一個單獨的文件中.

      3: 注冊操作符號信息

             調用函數registryOp()進行注冊
                 StrExpression.registryOp("您的運算符號",運算級別,"運算符實現類的包路徑");

            說明:1: 運算符號級別共分為3個級別,分別為1,2,3.其中第1級別為單目運算,
            2,3級別為雙木運算符號. * / ^等為第2級別,+ - 為第三級別.因此,所有的單目
            運算符號都必須設置成第1級別,而雙目運算符號的級別完全可以由用戶指定,如果您
            愿意,您可以把*/等設置為第3級別的運算符.級別的設置會影響運算結果,所以在設置運算
            級別時要特別小心。強調一下:只有單目運算符可以(也必須)設置為第一級別.否則會出現
            異常.
            2:  注意登記函數必須是實現類的 “包”路徑(帶包名)

     4.現在可以在在字符串表達式中出現您自己的運算符號了. 


  如果這樣說您不大明白,沒關系,請看下面的例題:                                  

  //自定義單目運算符號
  //-------------SExp.java--------------------------------
  //exp
  package demo;

  public class SExp implements SOperator {
  public Object calculate(Object op_num) throws DataInvalidException {
    try {
      double x = Double.parseDouble(op_num.toString());//取被除數
      double result =Math.exp(x);
      return new Double(result);
    } catch (Exception e) {
       throw new DataInvalidException("您輸入的字符串表達式,不符合格式要求,"+
                                      "導致無法計算,請檢測您的輸入表達式");
   }// end try-catch
   }//end calculate
   }//SExp

   注冊:    StrExpression.registryOp("exp",1,"demo.SExp");

  //自定義雙目運算符號
  //加法運算實現類
  package demo; 
  public class DAdd implements DOperator {
      public Object calculate(Object op_num1,Object op_num2) throws DataInvalidException {
        try {
          double x = Double.parseDouble(op_num1.toString());//取被加數
          double y = Double.parseDouble(op_num2.toString());//取加數
          double result = x + y;
          return new Double(result);
        } catch (Exception e) {
            throw new DataInvalidException("您輸入的字符串表達式,不符合格式要求,"+
                                           "導致無法計算,請檢測您的輸入表達式");
       }// end try-catch
     }//end calculate
   }//end DAdd

   注冊:    StrExpression.registryOp("add",3,"demo.DAdd");

●如何使一種操作呈現多種形態:
  進行注冊: 
    StrExpression.registryOp("add",3,"demo.DAdd");  
    StrExpression.registryOp("加上",3,"demo.DAdd");  
    StrExpression.registryOp("加法運算",3,"demo.DAdd");  
    實際上操作符號add 加上 加法運算 都是調用demo.Dadd的運算類.
     說明: 以上3個操作符號同時有效(可以在字符串運算表達式中調用 )

  
●如何修改運算符的性質
  注冊: 
  StrExpression.registryOp("add",3,"demo.DAdd");  
  StrExpression.registryOp("add",3,"demo.DDiv");  
  StrExpression.registryOp("add",3,"demo.DMul");  //有效(它把上面的覆蓋掉了)
  說明:最后注冊的有效

●如果您對系統提供的操作符號名不滿意,您可以重新注冊您所選的運算符號
 比如系統提供的平方運算符號是 "pin",你可以把它該成"平方"
 您可以這樣修改:
  StrExpression.registryOp("平方",1,"expression.SX2");  
  為了便于您修改,我把系統已注冊的操作符號羅列出來:

      //注冊標準標準操作符號
      //第一級別運算符號注冊
      registryOp("n!",1,"expression.SN");    //注冊階乘運算
      registryOp("dao",1,"expression.SDao"); //注冊倒數運算
      registryOp("sin",1,"expression.SSin"); //注冊正玄運算
      registryOp("cos",1,"expression.SCos"); //注冊余玄運算
      registryOp("tan",1,"expression.STan"); //注冊正切運算
      registryOp("sqrt",1,"expression.SSqrt"); //注冊開方運算
      registryOp("log",1,"expression.SLog"); //注冊對數運算
      registryOp("ln",1,"expression.SLn"); //注冊e為底的對數運算
      registryOp("exp",1,"expression.SExp"); //注冊指數運算
      registryOp("pin",1,"expression.SX2"); //注冊平方運算
      registryOp("li",1,"expression.SX3"); //注冊立方運算

      //第二級別運算符號注冊
      registryOp("^",2,"expression.DPow"); //注冊立方運算
      registryOp("*",2,"expression.DMul");//注冊乘法運算
      registryOp("/",2,"expression.DDiv");//注冊除法運算
      registryOp("%",2,"expression.DMod");//注冊求余數運算
      //第三級別運算符號注冊
      registryOp("+",3,"expression.DAdd");//注冊加法運算
      registryOp("-",3,"expression.DDec");//注冊減法運算

● 本引擎的缺點:
      出錯處理機制不完善,如果表達式非法,將會引起異常。

   
下面我給出一個完整的使用實例:


package demo;

import expression.*;//計算引擎庫

public class expressionDemo{
  public static void main(String[] args) {

     //說明: getValue是獲取運算結果的唯一方法.
     StrExpression se = new StrExpression();
     String str="4+3+3";
     try{
       System.err.println(se.getValue(str));
       //輸出10.0
       //改變操作符號
       StrExpression.registryOp("加法",3,"expression.DAdd");//改變操作符號,但運算性質沒變
       str="4加法3+3";
       System.err.println(se.getValue(str));
       //還是輸出10.0

       StrExpression.registryOp("加法",3,"expression.DMul");//實現類是乘法運算
       System.err.println(se.getValue(str));
       //輸出15.0

       //注冊自定義類
       StrExpression.registryOp("我的",2,"demo.my");
       StrExpression.registryOp("你的運算符號",1,"demo.your");
       str="3我的2/2";
       System.err.println(se.getValue(str));

       str="你的運算符號10+20*2";

       System.err.println(se.getValue(str));

     }catch (DataInvalidException die) {
       die.printStackTrace();
  }
  }
}

//--------------my.java
package demo;

import expression.*;

public class my implements DOperator {
  public Object calculate(Object op_num1,Object op_num2) throws DataInvalidException {
    try {
      double x = Double.parseDouble(op_num1.toString());//取被乘數
      double y = Double.parseDouble(op_num2.toString());//取乘數
      double result = x * y+10;
      return new Double(result);
    } catch (Exception e) {
        throw new DataInvalidException("您輸入的字符串表達式,不符合格式要求,"+
                                       "導致無法計算,請檢測您的輸入表達式");
    }// end try-catch
  }//end calculate
}//my


//============================your.java
package demo;
import expression.*;


public class your implements SOperator {
public Object calculate(Object op_num) throws DataInvalidException {
  try {
    double x = Double.parseDouble(op_num.toString());//取被除數
    double result =x*100;
    return new Double(result);
  } catch (Exception e) {
      throw new DataInvalidException("您輸入的字符串表達式,不符合格式要求,"+
                                     "導致無法計算,請檢測您的輸入表達式");
  }// end try-catch
}//end calculate
}//your

//==========================================================================
完!


        聯系方式: HuangBin0791@163.com
                   HuangYH@toone.com.cn
                   qq: 29063401

  

















































   



  





























    

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美猛男gaygay网站| 色一区在线观看| 天天综合色天天综合| 亚洲精品国久久99热| 中文字幕一区二区三区不卡| 国产精品白丝在线| 亚洲欧美日韩在线不卡| 亚洲人成小说网站色在线| 亚洲日本电影在线| 亚洲激情图片一区| 日韩精彩视频在线观看| 日韩国产精品久久| 激情综合网天天干| 国产福利一区在线| 91丨九色丨国产丨porny| 在线免费观看一区| 欧美一级搡bbbb搡bbbb| 久久久99久久| 欧美变态口味重另类| 国产精品国产精品国产专区不蜜 | 亚洲va在线va天堂| 午夜视黄欧洲亚洲| 精品亚洲porn| jlzzjlzz国产精品久久| 欧美调教femdomvk| 日韩欧美激情在线| 国产精品久久一级| 婷婷国产在线综合| 高清国产一区二区| 欧美性色aⅴ视频一区日韩精品| 欧美精品欧美精品系列| 日韩精品一区二区三区在线观看| 国产精品午夜免费| 亚洲电影第三页| 国产精品18久久久久久久网站| 97精品久久久久中文字幕 | 日韩中文字幕区一区有砖一区| 美女一区二区久久| 97久久久精品综合88久久| 欧美高清dvd| 一区在线播放视频| 狂野欧美性猛交blacked| 99国产精品久久久久久久久久| 欧美精品色一区二区三区| 亚洲国产精品精华液2区45| 亚洲成人三级小说| 99国产精品视频免费观看| 欧美一区二区黄色| 夜色激情一区二区| 成人午夜看片网址| 精品成人私密视频| 天堂va蜜桃一区二区三区漫画版| 99天天综合性| 久久精品男人的天堂| 日韩极品在线观看| 欧洲av在线精品| 亚洲人成网站影音先锋播放| 国产精品资源在线观看| 欧美一区二区三区喷汁尤物| 亚洲欧美日韩国产另类专区| 国产精品一区在线| 日韩你懂的在线播放| 亚洲超碰精品一区二区| 91小视频免费看| 中文字幕亚洲在| 本田岬高潮一区二区三区| 久久精子c满五个校花| 久久爱www久久做| 欧美一区二区三区免费| 午夜精品久久久久久久久| 91国产精品成人| 亚洲精品免费看| 在线免费不卡视频| 亚洲综合免费观看高清完整版在线 | 国产女主播一区| 国产一区美女在线| 26uuu精品一区二区| 黄网站免费久久| 久久综合中文字幕| 国产一区激情在线| 中文字幕av资源一区| 粉嫩嫩av羞羞动漫久久久| 欧美极品aⅴ影院| 菠萝蜜视频在线观看一区| 国产精品动漫网站| 91精品福利视频| 五月天精品一区二区三区| 91精品国产欧美日韩| 久久精品国产久精国产| 精品久久久久99| 成人免费视频视频| 亚洲精品国产一区二区精华液 | 亚洲mv在线观看| 日韩视频免费直播| 国产福利精品导航| 中文字幕制服丝袜成人av| 日本精品一区二区三区四区的功能| 亚洲精品国产精华液| 欧美一区二区福利视频| 精品无码三级在线观看视频| 欧美国产欧美综合| 欧美日韩精品一区二区三区蜜桃 | 亚洲一区二区三区中文字幕 | 久久人人爽人人爽| 99久久99久久免费精品蜜臀| 亚洲一区二区三区在线| ww久久中文字幕| 日本高清不卡aⅴ免费网站| 日韩不卡一区二区三区| 国产午夜精品理论片a级大结局 | 亚洲激情校园春色| 日韩欧美亚洲一区二区| bt欧美亚洲午夜电影天堂| 天涯成人国产亚洲精品一区av| 欧美刺激午夜性久久久久久久| 丰满放荡岳乱妇91ww| 五月天丁香久久| 国产精品天美传媒| 欧美一区二区三区四区五区 | 精品国产乱码久久久久久夜甘婷婷 | 日韩精品午夜视频| 亚洲国产岛国毛片在线| 777奇米四色成人影色区| 波多野结衣视频一区| 久久国产尿小便嘘嘘尿| 一区二区三区美女视频| 久久久国产精品不卡| 91精品欧美久久久久久动漫| av不卡在线观看| 国产精品66部| 精品一区二区综合| 亚洲国产精品尤物yw在线观看| 国产欧美va欧美不卡在线| 日韩欧美的一区二区| 91黄色免费看| 99r精品视频| 成人av免费在线观看| 国产一区二区三区免费| 日本欧洲一区二区| 丝袜诱惑制服诱惑色一区在线观看| 国产精品福利av| 国产精品免费丝袜| 中文字幕精品—区二区四季| 精品久久久久久久人人人人传媒| 欧美日韩不卡一区二区| 欧美在线|欧美| 91福利资源站| 欧美视频一二三区| 欧美专区日韩专区| 色国产综合视频| 色悠久久久久综合欧美99| 91麻豆国产香蕉久久精品| youjizz国产精品| 成人av动漫网站| 99精品视频在线观看免费| 99久久精品国产一区二区三区| 不卡电影免费在线播放一区| 国产成人免费在线| 成人国产亚洲欧美成人综合网| 国产69精品久久777的优势| 成人综合婷婷国产精品久久免费| 国产成人综合精品三级| 成人av集中营| 欧美在线观看禁18| 91精品国产黑色紧身裤美女| 91精品国产一区二区| 日韩一卡二卡三卡国产欧美| 欧美一区二区精品| 久久久久久毛片| 国产精品久久久久久一区二区三区| 国产精品美女一区二区在线观看| 国产精品久久久久久亚洲毛片| 亚洲丝袜另类动漫二区| 亚洲一二三区视频在线观看| 日韩精品一区第一页| 国产精品中文欧美| 91免费国产在线观看| 欧美肥胖老妇做爰| 久久九九久久九九| 亚洲黄色小说网站| 极品少妇一区二区| 色狠狠一区二区| 精品剧情在线观看| 亚洲免费在线电影| 美腿丝袜亚洲色图| 99精品视频在线观看| 日韩西西人体444www| 国产精品乱码人人做人人爱| 香蕉加勒比综合久久| 国产精品香蕉一区二区三区| 一本久道久久综合中文字幕| 欧美一卡二卡三卡| 亚洲色大成网站www久久九九| 蜜臀av一区二区在线观看| av午夜精品一区二区三区| 日韩一区二区三区视频| 亚洲三级在线观看| 国产精品一区三区| 日韩一区二区三区电影在线观看| 国产精品你懂的在线欣赏|