Aan de slagGa gratis aan de slag

Laatste actie ongedaan maken in een teksteditor

Veel teksteditors laten je achteruit door wijzigingen navigeren en ontbrekende woorden invoegen wanneer dat nodig is. Met ListIterator kun je achteruit door een lijst met acties lopen en waar nodig correcties invoegen.

In deze oefening doorloop je een lijst met woorden in omgekeerde volgorde. Als je "error" tegenkomt, voeg je correction vóór dat woord in, als simulatie van een undo-bewerking in een teksteditor.

Deze oefening maakt deel uit van de cursus

Input/Output en streams in Java

Cursus bekijken

Oefeninstructies

  • Maak een ListIterator-object voor de lijst textHistory, beginnend vanaf het einde.
  • Controleer of er eerdere elementen beschikbaar zijn in de lijst textHistory.
  • Haal het vorige element op en verplaats de ListIterator een stap terug.
  • Voeg het nieuwe element correction in vóór het element error.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

public class TextEditorUndo {
    public static void main(String[] args) {
        ArrayList textHistory = new ArrayList<>();
        textHistory.add("Hello");
        textHistory.add("error");
        textHistory.add("world");

        // Create ListIterator starting from the end of the list
        ListIterator it = textHistory.____(textHistory.____());

        // Check if more elements are available in reverse order
        while (____.____()) {
        	// Retrieve previous element
            String word = ____.____();
            if (word.equals("error")) {
                // Insert "correction" before "error"
                ____.____("correction");
            }
        }

        System.out.println(textHistory);
    }
}
Code bewerken en uitvoeren