JAVA实现EXCEL公式专题(七)——统计函数
来源:互联网 发布:猎豹网校java编程思想 编辑:程序博客网 时间:2024/06/16 12:48
统计函数主要实现的是较为复杂的统计函数如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<range.length;i++)for(int j=0;j<range[0].length;j++){try {Boolean b=(Boolean) engine.eval(range[i][j]+criteria);if(b)sum+=range[i][j];} catch (ScriptException e) {// TODO Auto-generated catch blocke.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<range.length;i++)for(int j=0;j<range[0].length;j++){try {Boolean b=(Boolean) engine.eval(range[i][j]+criteria);if(b)count++;} catch (ScriptException e) {// TODO Auto-generated catch blocke.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<array.length;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<res.length-1;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}));}}
1 0
- JAVA实现EXCEL公式专题(七)——统计函数
- JAVA实现EXCEL公式专题(二)——反射解析EXCEL函数
- JAVA实现EXCEL公式专题(四)——字符串函数
- JAVA实现EXCEL公式专题(五)——数字处理函数
- JAVA实现EXCEL公式专题(六)——查找引用函数
- JAVA实现EXCEL公式专题(一)——EXCEL公式分类与解析步骤
- JAVA实现EXCEL公式专题(三)——四则表达式解析
- Excel公式与函数笔记—第一篇
- java多线程-专题-聊聊并发(七)——Java中的阻塞队列
- 1094: 统计元音(函数专题)
- Excel公式与函数笔记—第二篇(简单通俗的基础介绍)
- EXCEL常用函数公式
- EXCEL常用函数公式
- excel函数公式大全
- Java面试题七(集合专题)
- 贷款计算公式——java实现
- mysql笔记七——Java实现excel表的读写(导出mysql数据库的所有表到excel表)
- mysql笔记七——Java实现excel表的读写(导出mysql数据库的所有表到excel表)
- PyCharm4.5更改字体设置
- Design By Contract(契约式设计)
- 1-基本操作
- 如何让超出范围的文本自动显示为省略号(CSS)
- 2-MATLAB数据类型
- JAVA实现EXCEL公式专题(七)——统计函数
- 提高Android开发效率——快捷键使用
- 【SpringMVC整合MyBatis】springmvc对RESTful支持
- 黑马程序员----单例设计模式
- 3-MATLAB基本运算
- hdu 5336 XYZ and Drops(模拟)
- POJ 2262 Goldbach's Conjecture(素数筛选法)
- 正则表达式匹配
- java文件预览