Oppgaven handler om feilsøking ("debugging") av en Iterator-implementasjon ved bruk av debuggeren i Eclipse.
Les først denne artikkelen om bruk av debugger i Eclipse om du ikke er kjent med dette: Bruk av debuggeren i Eclipse
Klassen StringMergingIterator implementerer grensesnittet Iterator<String>, og leverer annenhver verdi fra to andre iteratorer av typen Iterator<String>. Denne iteratoren fletter altså verdiene fra to andre gitte iteratorer, og er altså en meta-iterator. Meta-iteratorer er iteratorer som bruker andre iteratorer som datakilder. Se lysark om teknikken: Forelesningslysark om meta-iteratorer
StringMergingIterator har følgende konstruktør:
- StringMergingIterator(Iterator<String> first, Iterator<String> second)
Siden klassen implementerer Iterator<String> har den også følgende metoder:
- boolean hasNext() - returnerer true dersom iteratoren har flere verdier, false dersom det ikke er flere verdier.
- String next() - returnerer den neste verdien fra iteratoren, eller utløser et NoSuchElementException dersom iteratoren er tom.
OBS! I denne oppgaven har .ex-filen havnet feil. Filen befinner seg i pakken tests/interfaces, mens resten av øvingsfilene ligger under src/debugging og tests/debugging for testene. Vi har valgt å ikke flytte filen ettersom det kan føre til problemer for de som allerede har begynt på oppgaven.
I denne oppgaven blir en implementasjon av StringMergingIterator sammen med et testprogram utdelt, men i implementasjonen av klassen har vi plantet en eller flere feil. Målet for oppgaven er å finne feilene i implementasjonen ved hjelp av debuggeren i Eclipse. Kjør programklassen i debug-modus, og bruk dette til å finne ut hvor StringMergeIterator gjør feil. Dersom programklassen lykkes med å få en flettet strøm med verdier har du funnet alle feilene.