我要将一银行月报数据的按机构将多个月的数据进行汇总统计,报表文件名如“RP5023P??.TXT”(??代表月份),下面是报表文件和我写的统计程序代码: XXXXXX商业银行代收代扣业务月计表 2008 年 07 月 31 日 +----------+--------------------------+--------------------------+--------------------------+--------------------------+ | | 电 费 | 水 费 | 天然气费 | 工商规费 | | 机构代号 +--------+-----------------+--------+-----------------+--------+-----------------+--------+-----------------| | | 户数 | 金 额 | 户数 | 金 额 | 户数 | 金 额 | 户数 | 金 额 | |----------+--------+-----------------+--------+-----------------+--------+-----------------+--------+-----------------| | 209401 | 1357| 129,693.55| 42536| 558,326.65| | | | | |----------+--------+-----------------+--------+-----------------+--------+-----------------+--------+-----------------| | 209501 | | | 189| 6,089.24| | | | | |----------+--------+-----------------+--------+-----------------+--------+-----------------+--------+-----------------| | 218011 | | | | | 25240| 1,012,438.03| | | |----------+--------+-----------------+--------+-----------------+--------+-----------------+--------+-----------------| | 281080 | | | 144| 1,190.60| | | | | |----------+--------+-----------------+--------+-----------------+--------+-----------------+--------+-----------------| | 总计 | 1357| 129,693.55| 42869| 565,606.49| 25240| 1,012,438.03| | | +==========+========+=================+========+=================+========+=================+========+=================+ import java.io.BufferedReader; import java.io.File; import java.io.FileFilter; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.regex.Pattern; public class sisdsf_main { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String ready_line; ArrayList<dsfItemLine> JgDatList=new ArrayList<dsfItemLine>(0); int jgIdx; Pattern pattern = Pattern.compile("[|]+"); String[] strs; try { File file = new File("c://temp"); FileFilter FFilter_5023=new FileFilter(){ public boolean accept(File pathname) { String tmp=pathname.getName().toLowerCase(); if (tmp.startsWith("rp5023")) return true; return false; } }; //BufferedReader fd_in File[] list = file.listFiles(FFilter_5023); for (int i=0;i<list.length;i++) { if (list[i].isDirectory()) continue; System.out.println(list[i].getAbsolutePath()); BufferedReader fd_in = new BufferedReader(new FileReader(list[i].getAbsolutePath()));//"c://temp//RP5022P.TXT" do{ ready_line=fd_in.readLine(); if (ready_line==null) break; //pattern =Pattern.compile("^+----------+--"); //Pattern.matches("^+----------+--", ready_line); strs=pattern.split(ready_line); //System.out.println(strs.length); if (strs.length == 10 && !(strs[1].trim().equals(""))){ System.out.println(ready_line); dsfItemLine JgItem =new dsfItemLine(strs); if ((jgIdx=JgDatList.indexOf(JgItem))==-1) JgDatList.add(JgItem); else JgDatList.get(jgIdx).AddValue(JgItem); } }while(!(ready_line==null)); fd_in.close(); } }catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("统计结果如下:"); int maxitems=JgDatList.size(); for (int i=0;i<maxitems;i++) JgDatList.get(i).TabPrint(); } } class dsfItemLine { String jgdh; //String jgmc; int df_hs; double df_je; int sf_hs; double sf_je; int rqf_hs; double rqf_je; int gsgf_hs; double gsgf_je; public dsfItemLine(String[] strs) { int maxlen=strs.length ; int iPos=0; String tmp_val; /*System.out.println("数组长:"+maxlen); for (int i=1;i<maxlen;i++) System.out.println(""+i+":{"+strs[i]+"}");*/ jgdh=strs[++iPos]; //jgmc=strs[2]; //System.out.print("机构代号为:"+jgdh); //System.out.print(",机构名称为:"+jgmc); tmp_val=strs[++iPos].trim(); if (tmp_val.equals("")) tmp_val="0"; df_hs=Integer.valueOf(tmp_val); tmp_val=strs[++iPos].trim(); if (tmp_val.equals("")) tmp_val="0"; df_je=Double.valueOf(tmp_val.replace(",", "")); tmp_val=strs[++iPos].trim(); if (tmp_val.equals("")) tmp_val="0"; sf_hs=Integer.valueOf(tmp_val); tmp_val=strs[++iPos].trim(); if (tmp_val.equals("")) tmp_val="0"; sf_je=Double.valueOf(tmp_val.replace(",", "")); tmp_val=strs[++iPos].trim(); if (tmp_val.equals("")) tmp_val="0"; rqf_hs=Integer.valueOf(tmp_val); tmp_val=strs[++iPos].trim(); if (tmp_val.equals("")) tmp_val="0"; rqf_je=Double.valueOf(tmp_val.replace(",", "")); tmp_val=strs[++iPos].trim(); if (tmp_val.equals("")) tmp_val="0"; gsgf_hs=Integer.valueOf(tmp_val); tmp_val=strs[++iPos].trim(); if (tmp_val.equals("")) tmp_val="0"; gsgf_je=Double.valueOf(tmp_val.replace(",", "")); /*System.out.print(",电费{户数:"+df_hs); System.out.print(",金额:"+df_je); System.out.print("},水费{户数:"+sf_hs); System.out.print(",金额:"+sf_je); System.out.print("},天然气费{户数:"+rqf_hs); System.out.print(",金额:"+rqf_je); System.out.print("},工商规费{户数:"+gsgf_hs); System.out.println(",金额:"+gsgf_je+"}");*/ } public void AddValue(Object o) { df_hs+=((dsfItemLine)o).df_hs; df_je+=((dsfItemLine)o).df_je; sf_hs+=((dsfItemLine)o).sf_hs; sf_je+=((dsfItemLine)o).sf_je; rqf_hs+=((dsfItemLine)o).rqf_hs; rqf_je+=((dsfItemLine)o).rqf_je; gsgf_hs+=((dsfItemLine)o).gsgf_hs; gsgf_je+=((dsfItemLine)o).gsgf_je; } public void TabPrint() { System.out.println("/t"+jgdh+"/t"+df_hs+"/t"+df_je+"/t"+sf_hs+"/t"+sf_je+"/t"+rqf_hs+"/t"+rqf_je+"/t"+gsgf_hs+"/t"+gsgf_je); } public boolean equals(Object o) { //System.out.println("eeee:0"); if (o==null) return false; //System.out.println("eeee:1"); if (!(o instanceof dsfItemLine)) return false; /*System.out.println("eeee:2"); System.out.println("eeee:"+((dsfItemLine)o).jgdh+","+this.jgdh+"*");*/ if (((dsfItemLine)o).jgdh == this.jgdh) System.out.println("good!"); return this.jgdh.equals(((dsfItemLine)o).jgdh); } } 开发平台:Eclipse Platform Version: 3.4.0