0 Daumen
174 Aufrufe

Schreiben Sie im Folgenden eine Methode swapLocations() (ohne Rückgabeteyp/-wert), die die Inhalte der Referenzvariablen _departure und _destination vertauscht.

Gegeben:

public Route(Location departure, Location destination)

{

_departure = departure;

_destination = destination;

}


Die Methode soll sehr einfach gestaltet sein und nur wenige Zeilen benötigen.

public void swapLocations()

{

Location _destination;

Location _departure;

Location _zwischenergebnis;

_destination = _departure;

_zwischenergebnis = _destination;

_departure = _zwischenergebnis;

Warum ist das nicht richtig? In der Überprüfung steht dann, dass _departure = _zwischenergebnis might have not been initialized.

von

1 Antwort

0 Daumen
 
Beste Antwort

Du deklarierst unötigerweise (da es sich um Instanzvariablen handelt, diese sollten bereits unter class Route deklariert sein) folgende lokale Variablen (Variablen die in Methoden deklariert sind):

Location _destination;
Location _departure;
ohne das sie initialisiert (Variable = ...) werden, daher auch die Fehlermeldung, da du etwas ohne Wert zuweisen möchtest.


Die Methode müsste also so aussehen:

public void swapLocations() {
Location _zwischenergebnis = _destination; // Zuerst destination zwischenspeichern
_destination = _departure;                // destination mit departure ersetzen
_departure = _zwischenergebnis;            // departure mit destination (zwischenergebnis) ersetzen
}
Da es sich um Instanzvariablen handelt kannst du auf sie innerhalb der Methoden direkt zugreifen (zur Verdeutlichung könntest du noch this. vor die Variablennamen schreiben, also z.B. this._destination)
von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community