有没有一种方法可以将方法用作Java中另一个方法的输入变量?

时间:2020-01-05 00:25:00

标签: java

我试图创建一种方法,该方法以与大写西格玛符号在数学中相同的方式计算另一种方法的值之和。我希望它使用连续的自然数作为函数的输入变量,并使用递归将其全部求和。但是,由于我想创建一个用于一般求和的方法,因此我不确定如何将另一个(单个变量)方法分配为输入变量。

我想到了这样的东西:

    public static int sum(int lowerbound, int upperbound, function(int x)){
        int partialsum = 0;
        for (int i = lowerbound; i <= upperbound; i++){
        partialsum = partialsum + function(i);
        }
        return partialsum;
    }

有可能吗?

2 个答案:

答案 0 :(得分:3)

是的,有可能;但是您需要传递IntFunction(Java不是JavaScript)。喜欢,

public static int sum(int lowerbound, int upperbound, IntFunction<Integer> function) {
    int partialsum = 0;
    for (int i = lowerbound; i <= upperbound; i++) {
        partialsum = partialsum + function.apply(i);
    }
    return partialsum;
}

然后使用它,就像

public static void main(String[] args) {
    System.out.println(sum(1, 10, a -> a));
}

哪个输出

55

尚不清楚您期望得到什么结果(或打算通过什么功能)。

答案 1 :(得分:0)

您传递了IntUnaryOperator

public static int sum(int lowerbound, int upperbound, IntUnaryOperator func) { 
    ...
    partialsum += func.applyAsInt(i);

然后,传入方法或使用lambda:

sum(1, 2, n -> n * 2)