dedlfix: Ich check den Liste-Code von unserem Prof. nicht

Beitrag lesen

echo $begrüßung;

was mich gerade irritiert, dass 'ende' und 'anfang' ja zwei verschiedene Instanzvariablen von Liste sind.

Was sollen sie sonst sein? Die eine zeigt auf das letzte Element, die andere auf das erste.

Die Instanzvariable 'ende' wird naher bei der Methode toString nichtmal ausgelesen.

Ja und? Sie ist zur Stringbildung ja auch nicht notwendig. Dort wird getestet, ob statt eines Nachfolgeelements ein null im weiter steht und daraufhin abgebrochen. Man könnte auch testen ob das aktuelle Element gleich ende entspricht, aber dann hätte man das ende-Element ausgeschlossen, weil schon beim Test die Schleife endet und deren Körper nicht mehr für ende ausgeführt wird. Man muss dessen Behandlung nachreichen, kann aber dabei das Trennzeichen weglassen und muss nicht nachträglich selbiges entfernen. In diesem einfachen Fall ist das sogar ein Vorteil. Wenn aber der Schleifenkörper umfangreicher ist, muss man diese Anweisungen ja auch noch mal für ende notieren, was zu doppeltem Code führt.

Wenn du unbedingt das ende in toString haben willst, könntest du das so schreiben:

public String toString() {
  if (istLeer())
    return "<>";

String ergebnis = "";

for (ListenElement frosch = anfang; frosch != ende; frosch = frosch.getWeiter())
    ergebnis += frosch.getDaten() + " / ";
  }
  ergebnis += ende.getDaten();

return ergebnis;
}

Alternativ kann man die Schleife auch wie folgt notieren, dann hast du dein ende, das letzte Element wird innerhalb der Schleife behandelt und das Trennzeichenabschneiden entfällt ebenfalls.

public String toString() {
  if (istLeer())
    return "<>";

String ergebnis = "";

for (ListenElement frosch = anfang; frosch != null; frosch = frosch.getWeiter())
    ergebnis += frosch.getDaten()
    if (frosch != ende)
      ergebnis += " / ";
  }

return ergebnis;
}

ich muss mir den Code nochmal in Ruhe durchgehen und mit nem Beispiel auf Papier notieren.

Das setzt voraus, dass deine Gedankengänge exakt so wie Java arbeiten und dass du dir alle Zwischenwerte notierst oder merkst. Das kann man machen, ist aber nur bei einfachen Abläufen empfehlenswert.

Das mit dem Debugger ist auch ne Idee, mal schauen, wie das in Netbeans funktioniert.

Um Abläufe zu verfolgen und dabei die Einzelwerte zu begutachten, dafür ist so ein Debugger erfunden worden. Lerne mit ihm umzugehen. Er ist ein unverzichtbares Hilfsmittel zur Fehlersuche.

echo "$verabschiedung $name";