1

我需要使用 binaryOperator 实现一个应用方法来执行两个双精度数的数学过程,但不知道如何去做。我的代码的目的是一次对两个数字应用应用方法,每个数字都来自它各自的迭代器。

我编程时间不长,所以我的代码可能有很多错误,但这是我到目前为止的进展:

package interfaces;

import java.util.Arrays;
import java.util.Iterator; 
import java.util.function.BinaryOperator;

public class BinaryComputingIterator implements Iterator<Double>, 
                                            BinaryOperator<Double>{
private BinaryOperator<Double> operator;

private Iterator<Double> iterator1;
private Iterator<Double> iterator2;
private Double default1;
private Double default2;

BinaryComputingIterator(Iterator<Double> iterator1, 
        Iterator<Double> iterator2, BinaryOperator<Double> operator){
    this.iterator1 = iterator1;
    this.iterator2 = iterator2;
    this.operator = operator;
}

BinaryComputingIterator(Iterator<Double> iterator1, 
        Iterator<Double> iterator2, Double default1, Double default2,
        BinaryOperator<Double> operator){
    this.iterator1 = iterator1;
    this.iterator2 = iterator2;
    this.operator = operator;
    this.default1 = default1;
    this.default2 = default2;
}

@Override
public boolean hasNext() {
    if (iterator1.hasNext() && iterator2.hasNext()){
        return true;
    }
    return false;
}

@Override
public Double next() {
    if (this.hasNext()){
        return this.next();
    }
    return null;
}

@Override

public Double apply(Double t, Double u) {
    return this.operator.apply(t, u);
}

}
4

1 回答 1

0

Iterator应该实施. 您的 next() 方法应实现为BinaryOperator

 public Double next() {
   if (hasNext()) {
     return operator.apply(iterator1.next(), iterator2.next());
   } else {
     throw new NoSuchElementException(); // specified in the Iterator contract
   }
 }

那应该几乎涵盖了它。

于 2016-03-02T20:47:42.553 回答