java excel函数_JAVA实现EXCEL公式专题(七)——统计函数

统计函数主要实现的是较为复杂的统计函数如countif、sumif、frequency,也是,直接上代码/**

* 项目名称:

* 文件说明:

* 主要特点:文件说明:EXCEL函数类型:统计函数

* 简单的函数如sum,average等等就不实现了

* 版本:1.0

* 制作人:刘晨曦

* 创建时间:2013-12-3

**/

package EXCEL;

import games.MathTools;

import javax.script.ScriptEngine;

import javax.script.ScriptEngineManager;

import javax.script.ScriptException;

/**

* @author lcx

*

*/

public class CountFunctions {

/**

* 统计满足条件的个数

* @param range

* @param criteria

* @return

*/

public static int sumif(int[][] range,String criteria)

{

ScriptEngineManager man=new ScriptEngineManager();

ScriptEngine engine=man.getEngineByName("javascript");

int sum=0;

for(int i=0;i

for(int j=0;j

{

try {

Boolean b=(Boolean) engine.eval(range[i][j]+criteria);

if(b)

sum+=range[i][j];

} catch (ScriptException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

return sum;

}

/**

* 统计满足条件的个数

* @param range

* @param criteria

* @return

*/

public static int countif(int[][] range,String criteria)

{

ScriptEngineManager man=new ScriptEngineManager();

ScriptEngine engine=man.getEngineByName("javascript");

int count=0;

for(int i=0;i

for(int j=0;j

{

try {

Boolean b=(Boolean) engine.eval(range[i][j]+criteria);

if(b)

count++;

} catch (ScriptException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

return count;

}

public static void sort()

{

System.out.println("给array和tags排序");

}

/**

* 为简化处理,在这里边需保证输入的是升序排列的数组

* @param array

* @param tags

* @return

*/

public static int[] frequency(int [] array,int[] tags)

{

sort();//排序,在这里就不实现了

if(array==null||tags==null||array.length==0||array.length==0)

throw new IllegalArgumentException("数组为空");

int[] res=new int[tags.length+1];

int count=0;

for(int i=0;i

{

if(count>=tags.length)

break;

if(array[i]<=tags[count])

res[count]+=1;

else

{

i--;

count++;

}

}

//剩余的

int sum=0;

for(int i=0;i

sum+=res[i];

res[res.length-1]=array.length-sum;

return res;

}

public static void main(String[] args) {

/*******************測试数组相关*****************************/

int [][]a={{1,2},{3,4},{5,6}};

//countif(a,"<=2");

//System.out.println(rank(3,a,true));

System.out.println(sumif(a,"<=2"));

int[] b={15,25,35,45,55,65,75,85,95};

MathTools.printArray(frequency(b,new int[]{10,90}));

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值