1

2 つの double に対して数学的手順を実行するために binaryOperator を使用して apply メソッドを実装する必要がありますが、その方法がわかりません。私のコードの目的は、それぞれのイテレータから一度に 2 つの数値に apply-method を適用することです。

私は長い間プログラミングをしていないので、私のコードにはおそらく多くの間違いがありますが、これまでのところ私はここまで来ました:

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ないくださいBinaryOperator。next() メソッドは次のように実装する必要があります

 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 に答える