2016-03-02 2 views
1

Мне нужно реализовать метод apply, используя binaryOperator, чтобы выполнить математическую процедуру в двух двухместных, но не могу узнать, как это сделать. Цель моего кода - применить метод apply по двум числам за раз, каждый из которых соответствует соответствующему итератору.Невозможно выяснить, как реализовать метод apply для интерфейса binaryOperator java

Я не программировал слишком долго, так что мой код, вероятно, имеет много ошибок, но это, как далеко я пришел «сезам Сейчас:

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); 
} 

} 

ответ

0

Ваш Iterator должен не осуществить BinaryOperator. Ваш следующий() метод должен быть реализован как

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

Это должно в значительной степени покрыть его.

+0

Спасибо, это очень помогло! – Camilla

Смежные вопросы