MINT lernen

Typische Fehler — was oft schiefgeht

Die zwölf häufigsten Fehler bei DynArray, Stapel und Schlange — mit Richtigstellung.

!

Die 12 häufigsten Fehler

1Das letzte Element wird an Index getLength() gesucht

So wird es oft gemacht: l.getItem(l.getLength())

Richtig ist: l.getItem(l.getLength() - 1) — die Zählung beginnt bei 0.

Letzter Index = Länge minus 1.

2insertAt und setItem werden verwechselt

So wird es oft gemacht: Auf [A, B, C] ergibt insertAt(1, "X") die Reihung [A, X, C].

Richtig ist: [A, X, B, C] — insertAt schiebt ein, erst setItem würde B ersetzen.

insertAt: Länge + 1 · setItem: Länge bleibt.

3Beim Löschen vorwärts wird ein Element übersprungen

So wird es oft gemacht: Vorwärts-for mit delete(i) auf [1, 1, 5] ergibt [1, 5].

Richtig ist: Rückwärts laufen: aus [1, 1, 5] wird [5].

Löschen in der Schleife: von hinten nach vorn.

4Die Schleife läuft einen Index zu weit

So wird es oft gemacht: for (int i = 0; i <= l.getLength(); i++)

Richtig ist: i < l.getLength() — sonst Laufzeitfehler im letzten Durchlauf.

Kleiner als die Länge, nicht kleiner gleich.

5Texte werden mit == verglichen

So wird es oft gemacht: if (l.getItem(i) == name)

Richtig ist: if (l.getItem(i).equals(name))

Zeichenketten immer mit equals vergleichen.

6pop und top werden verwechselt

So wird es oft gemacht: Zweimal top() liefert nacheinander die beiden obersten Elemente.

Richtig ist: top() liefert zweimal dasselbe; erst pop() entnimmt.

pop entnimmt, top schaut nur.

7Entnehmen ohne isEmpty-Prüfung

So wird es oft gemacht: String x = s.pop(); auf einem möglicherweise leeren Stapel

Richtig ist: if (!s.isEmpty()) { String x = s.pop(); }

Vor pop, top, dequeue und head: isEmpty prüfen.

8Der Stapel wird nach dem Durchsehen nicht zurückgeladen

So wird es oft gemacht: Nach dem Zählen mit pop ist der Originalstapel leer.

Richtig ist: Alles vom Hilfsstapel zurückladen, dann erst return.

Umladen · bearbeiten · zurückladen.

9Die Klammerprüfung vergisst das Ende

So wird es oft gemacht: (() gilt als korrekt, weil jede schließende Klammer gepasst hat.

Richtig ist: Am Ende muss isEmpty() gelten — hier liegt noch ( im Stapel.

Korrekt heißt auch: Stapel am Ende leer.

10Neue Elemente landen gedanklich vorn

So wird es oft gemacht: Nach enqueue("Z") liefert head() den Wert Z.

Richtig ist: Z steht hinten; head() liefert weiter das vorderste Element.

enqueue hinten, dequeue und head vorn.

11Rotation mit while (!q.isEmpty())

So wird es oft gemacht: while (!q.isEmpty()) { q.enqueue(q.dequeue()); }

Richtig ist: Die Länge bleibt gleich — Endlosschleife. Stattdessen n-mal mit vorher bestimmtem n rotieren.

Anzahl der Durchläufe vorher festlegen.

12Die Struktur wird nach der Art der Daten gewählt

So wird es oft gemacht: „Für Zahlen nimmt man ein DynArray, für Aufträge eine Schlange.“

Richtig ist: Entscheidend ist die Reihenfolge des Zugriffs: beliebig, neuestes zuerst oder ältestes zuerst.

Wählen nach dem Zugriff, nicht nach dem Inhalt.