2 sinat 33415638 sinat_33415638 于 2016.01.28 17:51 提问

小白求教,分日期求和问题
想实现分日期累加求和并添加到excel中,   可是传到excel中的数据把每一天的数据都打出来了。帮忙看一下问题出在哪了?
    double sum = 0;
    double a = 0;
    String cellValue = "";
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd");
    Date date = inputRow.getCell(
            Integer.parseInt(source.getProperty("日期列")) - 1)
            .getDateCellValue();
    cellValue = formatter.format(date);
    ArrayList<String> date1 = new ArrayList<String>();
    ArrayList<Double> value1 = new ArrayList<Double>();
    ArrayList<String> date2 = new ArrayList<String>();
    ArrayList<Double> value2 = new ArrayList<Double>();
    value1.add(inputRow.getCell(
            Integer.parseInt(source.getProperty("求和列")) - 1)
            .getNumericCellValue());
    date1.add(cellValue);
    for (int c = 0; c < date1.size(); c++) {
        try {
            if (date1.get(c).equals(date1.get(c + 1))) {
                a = value1.get(c);
                sum = a + sum;
            } else {
                a = value1.get(c);
                sum = a + sum;
                date2.add(date1.get(c));
                value2.add(sum);
                sum = 0.0;
            }
        } catch (Exception e) {
            a = value1.get(c);
            sum = a + sum;
            date2.add(date1.get(c));
            value2.add(sum);
        }
    }
    for (int k = 0; k < date2.size(); k++) {
        outputRow.createCell(14).setCellValue(value2.get(k));
        outputRow.createCell(3).setCellValue(date2.get(k));
        outputRow.createCell(4).setCellValue(date2.get(k));
    }
}


主函数里的方法,调用的processSum求和方法

for (i = o; i < lastnum; i++) {
                XSSFRow readrow = readsheet.getRow(i);// 获取输入行
                Process p = new ProcessRow();
                if (p.panduan2(readrow)) {
                    XSSFSheet sheet = sc.getSheetAt(0);
                    XSSFRow outputrow = sheet.createRow(j++);
                    p.processSum(readrow, outputrow);
                }
            }

1个回答

caozhy
caozhy   Ds   Rxr 2016.01.28 18:13

定义hashmap,先循环,把相同日期的累加到相同日期为key的数量中,然后再遍历输出,就是分组的结果了。

sinat_33415638
sinat_33415638 我感觉我这个写法,循环内每次执行存的都是一个新的数组里,循环到下一次就跟这次的没关系了
2 年多之前 回复
sinat_33415638
sinat_33415638 我不知道key值,我写的这个方法为什么不行
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
5-2 一元多项式的乘法与加法运算 (20分)
5-2 一元多项式的乘法与加法运算   (20分) 设计函数分别求两个一元多项式的乘积与和。 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。 输出格式: 输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能
C#写COM组件
求教求教求教求教求教求教求教
oracle 按照时间分组统计求和
select t.year,   t.季度 时间类型,   sum(A)over (order by rownum rows BETWEEN unbounded preceding and current row)A, sum(B)over (order by rownum rows BETWEEN unbounded preceding and current row)B, sum(
小白求教
各位大佬好:       小白上线请多指教。本小白想考CISSP,想自学,请各位大佬给提提建议,我该买什么书籍,去哪里找题库呢?
ACM-素数求和问题
描述 现在给你N个数(0<N<1000),现在要求你写出一个程序,找出这N个数中的所有素数,并求和。 输入第一行给出整数M(0 每组测试数据第一行给你N,代表该组测试数据的数量。 接下来的N个数为要测试的数据,每个数小于1000输出每组测试数据结果占一行,输出给出的测试数据的所有素数和样例输入 3 5 1 2 3 4 5 8 11 12 13 14 15 16 17 18 10 21 22
MySQL按时间分组求和
mysql如何按月求和
简单求和
4-3 简单求和   (10分) 本题要求实现一个函数,求给定的N个整数的和。 函数接口定义: int Sum ( int List[], int N ); 其中给定整数存放在数组List[]中,正整数N是数组元素个数。该函数须返回N个List[]元素的和。 裁判测试程序样例: #include #define MAXN 10 int Sum ( int Lis
20160510 GreenPlum4 SQL中求和相关语句的总结
 
7-8 查验身份证(15 分)
7-8 查验身份证(15 分)一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下:首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然后将计算的和对11取模得到值Z;最后按照以下关系对应Z值与校验码M的值:Z:0 1 2 3 4 5 6 7 8 9 10 M:1 0 X 9 8 7 6 5 4...
get请求与post请求的区别
在客户机和服务器之间进行请求-响应时,两种最常用的方法是:GET与POST. GET-从指定的资源请求数据. POST-想指定资源提交被处理的数据 ————————————————华丽的分割线————————————————————————– get方法 请注意,查询字符串(名称/值对)是在get请求的URL中发送的:/test/demo_from.asp?name1&=value1&na