...
For å håndtere tilfellet hvor den ene iteratoren gir ut flere verdier enn den andre, så skal det være mulig å gi standardverdier hhv. default1og default2 for iterator1 og iterator2, som vil bli brukt for å fylle inn manglende verdier. Hvis BinaryComputerIterator henter verdier fra to iteratorer med hhv. verdiene 6, 3, 0 og 3, 4 og den binære operatoren er (num1, num2) -> num1 - num2 og default2 er 2, så skal sekvensen en får ut være 3, -1, -2.
Exercise-panelet
Bruk av Exercise-panelet er obligatorisk for denne øvingen. Du må ha panelet åpent med Named.ex-filen (tests > interfaces> Named.ex) i før du begynner med oppgaven. For mer informasjon/hjelp, se nederst på forrige side, altså hovedsiden for Øving 6.
BinaryComputingIterator
BinaryComputingIterator-klassen har to konstruktører, en med og en uten standardverdier:
...
- boolean hasNext() - returnerer true dersom det kan beregnes flere verdier, altså hvis begge iteratorene enten har flere verdier eller har en tilhørende standardverdi. Men merk at hasNext() returnerer uansett false, hvis begge iteratorene er tomme.
- Double next() - returnerer resultatet av å bruke binæroperasjonen operator på de neste verdiene fra sub-iteratorene, og bruker standardverdier dersom en av iteratorene ikke har flere verdier.
Eksempel
BinaryOperator-implementasjoner kan lett skrive ved hjelp av Java 8 sin funksjonsnotasjon. Dersom man for eksempel vil bruke en addisjonsoperator kan det se slik ut:
Code Block |
---|
Iterator<Double> iterator1 = Arrays.asList(2.0, 3.0).iterator(); Iterator<Double> iterator2 = Arrays.asList(5.0).iterator(); BinaryComputingIterator binaryIterator = new BinaryComputingIterator(iterator1, iterator2, null, 10.0, (x, y) -> x+y); binaryIterator.next(); // 7.0 binaryIterator.hasNext() // true binaryIterator.next() // 13.0 binaryIterator.hasNext() // false |
JExercise-testkode Testkode for BinaryComputingIterator er her: interfaces/BinaryComputingIteratorTest.java. Originalkoden (jextest) for testen finner du her: interfaces/BinaryComputingIterator.jextest .ex for bruk med Exercise-panelet finner du her: BinaryComputingIterator.ex .
Include Page | ||||
---|---|---|---|---|
|