📄 guide.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 + -