⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 guide.txt

📁 该计算器既有经典的GUI按钮模式
💻 TXT
字号:
1、宽展函数库基本准则
   a.Java类必须声明为public,必须有一个声明为public的无参构造函数。
   b.欲加入函数库的方法必须声明为public, 且有且只有一个com.yihuasoft.math.DoubleArray参数,
     必须声明抛出com.yihuasoft.math.InvalidParameterException异常(在DoubleArray中已经提供了
     若干高频的参数检查方法)
   c.com.yihuasoft.math.DoubleArray是一个double数组的封装,并且不允许修改数组值。

2、实例
   如下类声明
   则此了中有incomeTax,delta两个方法满足要求,其他方法是工具方法,将被自动检测忽略,若强行在
     配置中生命,仍然被忽略。

//////////////////////////////////////////////////////

package com.yihuasoft.math;
.....

public class EconomicsFunctions {
/**
  * Compute the income tax, this method need 2 parameters;
  * d1: the original income
  * d2: taxable starting income(locale interrelated )
  * @param paras DoubleArray
  * @return Double
  * @throws InvalidParameterException
  */
 
 public Double incomeTax(DoubleArray paras)throws InvalidParameterException{
   paras.need2();
   double income=paras.get(0);
   double basicm=paras.get(1);
   double over=income-basicm;

   if(over>100000)return new Double(over*0.45-15375);
   if(over>80000)return new Double(over*0.4-10375);
   if(over>60000)return new Double(over*0.35-6375);
   if(over>40000)return new Double(over*0.3-3375);
   if(over>20000)return new Double(over*0.25-1375);
   if(over>5000)return new Double(over*0.2-375);
   if(over>2000)return new Double(over*0.15-125);
   if(over>500)return new Double(over*0.1-25);
   if(over>0)return new Double(over*0.05);
   return new Double(0);
 }

  /**
    * Compute standard deviation of a group of statistics data.
    * Atleast one parameter is needed.
    * 
    * @param paras DoubleArray
    * @return Double
    * @throws InvalidParameterException
    */
  public Double delta(DoubleArray paras)throws InvalidParameterException{
     paras.atleast1();
    return  new Double(Math.sqrt(dx_(paras)));
   }


  private double dx_(DoubleArray paras) throws
      ArrayIndexOutOfBoundsException {
    double avg = avg_(paras);

    double re=0;
    for(int i=0;i<paras.size();i++){
      re+=(paras.get(i)-avg)*(paras.get(i)-avg);
    }
    return re/paras.size();
  }

  private double avg_(DoubleArray paras) throws ArrayIndexOutOfBoundsException {
    double avg=sum_(paras)/paras.size();
    return avg;
  }



  private double sum_(DoubleArray paras) throws ArrayIndexOutOfBoundsException {
    double re=paras.get(0);
    for(int i=1;i<paras.size();i++){
      re+=paras.get(i);
    }
    return re;
  }


  

//////////////////////////////////////////////////////

3、对已上函数

配置1
<calc>
....
    <class name="com.yihuasoft.math.EconomicsFunctions" auto="true" match="*">

    </class>
....
</calc>
(详细语法请参看'calc.dtd'文件)
class:指定Java类
name:完整的类路径
auto:ture表示自动检测所有满足准则类方法,false则不自动检测。
match:在满足准则的情况下,按要求自动检测,"*"表示检测所有,"*Abc",表示检测所有以Abc结尾的Java方法......



则此时在命令行将可以调用函数:delta和incomeTax
 


配置2

<calc>
....
    <class name="com.yihuasoft.math.EconomicsFunctions" auto="true" match="*">

        <function method="incomeTax">
            <alias>个人所得税</alias>
            <alias>所得税</alias>
        </function>

    </class>
....
</calc>
function:定制函数,此版本中只提供添加别名机制。
alias:函数别名,(1个方法可以有任意多个别名,但该别名在该系统中只能出现一次,第2次出现将被忽略。)


则此时在命令行将可以调用函数:delta和incomeTax, 个人所得税,所得税。
    其中delta函数将调用“EconomicsFunctions”类的“delta”方法,“incomeTax”, “个人所得税”,
   “所得税”都将调用EconomicsFunctions类的incomeTax方法。

注意:此处的函数和方法是不同概念。函数(function)是指可以在命令行下调用的指令,是大小写不敏感的,如对已上配置,
      在明令行下掉用delta,DELTA效果是一样的。方法(method)是指符合Java语言规范Java类中的方法,使大小写敏感的,
      在示例类中有无个Java方法,其中有两个符合准则1,可以被明令行调用。按照配置2,命令行中将有4个函数,其中
      有3个(“incomeTax”, “个人所得税”,“所得税”)是等效的,对应Java类的1个方法。

4、注意事项
   该版本不支持动态配置,若新添加函数库,则需重起计算器。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -