2 sinat 33415638 sinat_33415638 于 2016.02.02 15:38 提问

小白求助,java简化代码问题
    public void UseProcessSum() throws IOException {
    sc = Output.getWorkbook();
    XSSFSheet readsheet = readWorkbook();
    for (; i <= lastnum; i++) {
        System.out.println("getsum");
        XSSFRow readrow = readsheet.getRow(i);// 获取输入行
        ProcessRow p = new ProcessRow();
        if (p.panduan2(readrow)) {
            System.out.println(p.panduan2(readrow));
            date1.add(sumArray(readrow));
            value1.add(Double.parseDouble(readrow.getCell(
                    Integer.parseInt(ProcessRow.source.getProperty("求和列")) - 1)
                    .toString()));
        }
    }
    double sum = 0;
    double a = 0;
    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++) {
        ProcessRow p = new ProcessRow();
        XSSFSheet sheet = sc.getSheetAt(0);
        XSSFRow outputrow = sheet.createRow(j++);
        outputrow.createCell(14).setCellValue(value2.get(k));
        outputrow.createCell(3).setCellValue(date2.get(k));
        outputrow.createCell(4).setCellValue(date2.get(k));
        p.processGG(outputrow);
        p.processAlie(outputrow);
        p.processZhai2(outputrow);
    }
    sc.write(Output.init());
    sc.close();
}

有很多个这样的求和方法,他们之间就if (p.panduan2(readrow))这句不一样,我怎么写成一个方法呢,我想把(p.panduan2(readrow)当参数传进去,可是readrow是方法里的

1个回答

caozhy
caozhy   Ds   Rxr 2016.02.02 15:46
 编写一个接口
interface IPanduan
{
    Boolean panduan(XSSFRow row);
}

将这个接口作为参数
void foo( IPanduan ipd)
{
...
ProcessRow p = new ProcessRow();
        if (ipd(readrow) {
            System.out.println(p.panduan2(readrow));
...
}

调用
IPanduan pd = new  IPanduan() {
Boolean panduan(XSSFRow row) {
 ...
}};
foo(pd);
sinat_33415638
sinat_33415638 foo写在哪?调用就写在我方法里吗
2 年多之前 回复
sinat_33415638
sinat_33415638 foo是那块的啊?
2 年多之前 回复
caozhy
caozhy 回复sinat_33415638: 你有把ipd作为你的参数写上么?以及你有定义IPanduan么
2 年多之前 回复
sinat_33415638
sinat_33415638 没有为类型 UseProcess 定义方法 ipd(XSSFRow)
2 年多之前 回复
caozhy
caozhy 回复sinat_33415638: 是啊
2 年多之前 回复
sinat_33415638
sinat_33415638 没看懂。。。我readrow是方法里的啊
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Python小白初次配置兼学习方法指引
好早就想做这个,因为个人在Python群中还是比较活跃的,总是解答些同样小白的问题还是很累的。 以后发个链接让他们自己看好了。也能增加他们的自学能力(强行解释一波) 废话结束,开始正文: 首先说明下学习Python的路径: 基础->进阶->第三方模块的学习->源码->写自己的模块 再强行解释一波,基础是关键,我觉得,就算你已经熟练掌握了基础,你再看三遍四遍也不算多;基础熟练了以后
Java 代码简化系列 (一)
Java趣味短码 - (第一节) 今天跟公司的童鞋聊天的时候,谈到了关于短码和代码的精简的方式,所以整理出来。 需求很简单。 首先定义一个类 class Item{ public int key; public int l; public int r; }; 然后主函数的场景大概是这样 public static void main(String[] args
《Java从小白到大牛精简版》电子书源代码
源代码是与《Java从小白到大牛精简版》电子书中案例配套示例代码。《Java从小白到大牛精简版》本书是一本Java语言学习教程,读者群是零基础小白,通过本书的学习能够成为Java大牛。主要内容包括:Java语法基础、数据类型、运算符、控制语句、数组、字符串、面向对象基础、继承与多态、抽象类与接口、集合框架、异常处理、输入输出和网络编程等技术。
使用Java注解来简化你的代码
注解(Annotation)就是一种标签,可以插入到源代码中,我们的编译器可以对他们进行逻辑判断,或者我们可以自己写一个工具方法来读取我们源代码中的注解信息,从而实现某种操作。需要申明一点,注解不会改变编译器的编译方式,也不会改变虚拟机指令执行的顺序,它更可以理解为是一种特殊的注释,本身不会起到任何作用,需要工具方法或者编译器本身读取注解的内容继而控制进行某种操作。本篇文章将从以下几点详细的介绍下J
JAVA-代码简化工具
lomboklombok可以使用在myeclipse/eclipse/idea等开发工具中, 主要作用就是简化pojo繁杂的getter/setter工作使用方法楼主使用的是pom.xml下载jar包的方式,如果不是maven项目的可以自行百度lombok下载相应jar 这里直接copy到pom.xml里 <!-- 简化set,get方法 --> <dependency>
Java小白day01 求助~~
小白最近正在学习JAVA,今天练习写的这段代码为什么不正确啊,格式和代码内容对照半天,自己没发现问题啊。。。。。求大神们指点!!!拜谢~~
JAVA奇技淫巧简化代码之lombok
背景最近在做一个小功能,又不想在原有体态臃肿的项目中追加,为了调试方便并且可以快速开发就采用了springboot。由于使用了JPA,建了几个类,然后通过IDE去生成其属性的构造器、getter、setter、equals、hashcode、toString方法,那么Java中有没有一种方式能够避免这种重复的劳动呢?答案是有,想着前几天听说有一款简化神奇Lombok,特此拿来玩玩记录一下。简介Lom
java小白求助
有Java程序:public class E { public static void main(String args[]){ for(int i=20302;i&amp;lt;=20322;i++);{ System.out.println((char)i); } }}为什么运行后显示的是   找不到输出中的  i  符号?在for中已经定义了呀???...
javaWeb_使用标签库简化jsp
jsp标签库,也叫自定义标签。   应用范围     jsp标签,主要应用于前台页面,在jsp中,如果jsp中存在 等 java代码,那么对前台开发人员来说,就需要了解 java代码。     如何在开发前台 而且不懂java代码的情况下,合作开发呢?     在前台页面中,大多都是html+css+javascript的代码,突然之间一大堆的java代码,的确让人很为难。     引
java小白必须要看的学习流程,错过…
Java基础 入门阶段,主要是培养Java语言的编程思想。了解Java语言的语法,书写规范等,掌握Eclipse、MyEclipse等开发工具,编写Java代码的能力。学完这个阶段你应该可进行小型应用程序开发并且可以对数据库进行基本的增删改查管理。注意:此阶段知识点的学习,会有真实的项目进行驱动学习,让你轻松理解各知识点。 一、先明白了解什么是Java的四个方面。 初学者先弄清这些Jav