JAVA實現EXCEL公式專題(七)——統計函數

來源:互聯網
上載者:User

標籤: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<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}));}}

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

JAVA實現EXCEL公式專題(七)——統計函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.