Seite 4 von 6

Re: Übung 11 online!!!!

Verfasst: 30. Jan 2008 17:48
von Krümelmonster
Du versuchst wohl mit einer foreach Schleife eine Collection zu durchlaufen.
Wenn du allerdings die dem Iterator zugrundeliegende Collection veränderst,
dann wird der Iterator ungültig.

Versuche es mal mit einer normalen for Schleife mit Integer-Iterator.

Re: Übung 11 online!!!!

Verfasst: 30. Jan 2008 17:50
von ChRiZz88
So sieht meine for-Schleife aus:

Code: Alles auswählen

for (Airport item : airportMap){
...
}
Wie solls denn aussehn?

Re: Übung 11 online!!!!

Verfasst: 30. Jan 2008 17:56
von Krümelmonster

Code: Alles auswählen

for (int i=0; i<airportMap.length(); i++) {
...
}
Entsprechend musst du noch die Methoden anpassen, die vorher item benutzt haben.

Re: Übung 11 online!!!!

Verfasst: 30. Jan 2008 17:58
von s!mon
Weiß nicht obs daran liegt, aber leg doch einfach eine neue Airport-Liste an und wenn das Objekt nicht der gesuchte Airport ist wird es in die Liste geschrieben, ansonsten nicht. Ich hab ne HashMap genommen, damit habe ich eine 2-Zeilen Methode :)

Re: Übung 11 online!!!!

Verfasst: 30. Jan 2008 19:20
von Mojito Mix
ChRiZz88 hat geschrieben:So sieht meine for-Schleife aus:

Code: Alles auswählen

for (Airport item : airportMap){
...
}
Wie solls denn aussehn?
ich glaub es geht auch so...du musst glaube nur sicherstellen, dass du das objekt außerhalb der for schleife löschst und nicht innerhalb...

Re: Übung 11 online!!!!

Verfasst: 31. Jan 2008 00:00
von ChRiZz88
Wenn ich das Objekt außerhalb der for-Schleife lösche, brauche ich ja die Schleife zu nix...
Denn ich muss ja in der Schleife zumindest eine externe Funktion aufrufen, die sofort löscht, denn mit dem nächsten Durchlauf ist der schöne Wert, den ich löschen mag, auch schon wieder weg...
Achja und .length geht nicht, weils ne LinkedList ist :/

Okay andre Frage: Wie kann ich mir ne LinkedList ausgeben lassen? Mit

Code: Alles auswählen

System.out.println(airportMap.toString());
kommt raus:

Code: Alles auswählen

[Airport@a90653, Airport@de6ced, Airport@c17164, Airport@1fb8ee3]
Ist das ein ausgabetechnischer Fehler oder liegt das an einem Fehler in meiner addAirport?

Re: Übung 11 online!!!!

Verfasst: 31. Jan 2008 09:59
von guido
ChRiZz88 hat geschrieben:Wenn ich das Objekt außerhalb der for-Schleife lösche, brauche ich ja die Schleife zu nix...
Denn ich muss ja in der Schleife zumindest eine externe Funktion aufrufen, die sofort löscht, denn mit dem nächsten Durchlauf ist der schöne Wert, den ich löschen mag, auch schon wieder weg...
Achja und .length geht nicht, weils ne LinkedList ist :/

Okay andre Frage: Wie kann ich mir ne LinkedList ausgeben lassen? Mit

Code: Alles auswählen

System.out.println(airportMap.toString());
kommt raus:

Code: Alles auswählen

[Airport@a90653, Airport@de6ced, Airport@c17164, Airport@1fb8ee3]
Ist das ein ausgabetechnischer Fehler oder liegt das an einem Fehler in meiner addAirport?
Weder noch; vermutlich hast Du in Airport die Methode "public String toString()" nicht überschrieben. Dann kommt das angezeigte heraus.

Mit Code wie etwa folgendem sollte die Ausgabe "passen":

Code: Alles auswählen

public String toString() {
  StringBuffer sb = new StringBuffer(256);
  sb.append("Airport '").append(getName()).append(", location: (");
  sb.append(getX()).append(", ").append(getY()).append(")");
  return sb.toString();
}
Jedenfalls, wenn Du entsprechende Attribute bzw. Methoden im Airport besitzt :)

Guido

Re: Übung 11 online!!!!

Verfasst: 31. Jan 2008 15:28
von Demmi
Bezüglich der Datenstruktur für die Airports schließ' ich mich dem s!mon an und sag hashmap. Wenn man sich da kurz ein bisschen mit beschäftigt wird man sehen, dass es echt schnell und einfach geht.
Edit: Ich seh' grad, ich hab's mit ner Hashtable gemacht. Scheint in dem Fall keinen Unterschied zu machen.

Re: Übung 11 online!!!!

Verfasst: 31. Jan 2008 15:52
von Stumpf.Alex
Ich verstehe das Problem gerade net ganz...bei ArrayList (evtl. Collections allgemien) gibt es doch die Methode remove(<T> e), also löscht er das erste vorkommen von dem Objekt in der Liste. Und wenn ich also nur den Airportnamen habe, kann ich ja mir das entsprechende Airportobjekt aus der Liste raussuchen und dann mit meiner Liste myList.remove(airportobject) den Airport löschen.

Re: Übung 11 online!!!!

Verfasst: 31. Jan 2008 15:56
von Krümelmonster
Der Grund für die Schleife ist (bei mir zumindest), dass ich alle Vorkommen des Flughafens löschen will.

Re: Übung 11 online!!!!

Verfasst: 31. Jan 2008 16:15
von ChRiZz88
Wie soll das Ergebnis denn aussehen? D.h. die Ausgabe, die nach Flight route test finished zu kommen hat? Das Ende meiner Ausgabe sieht in etwa so aus:

Code: Alles auswählen

-----Flight route test finished-----
-----Delete Test finished-----

Re: Übung 11 online!!!!

Verfasst: 31. Jan 2008 16:39
von Jo(h)nny
@ChRiZz88, zwischen flight test und delete test müsste noch eine meldung kommen, weil du versuchst zum flüghafen fliegen, den es gar nicht gibt

Code: Alles auswählen

test.deleteAirport("Köln");
		try {
			test.flyTo("Köln");
		} catch (AirborneComputerException e) {
			System.out.println(e.getMessage());
		}
		System.out.println("-----Delete Test finished-----");
also müsste deine delete-methode falsch funktionieren

Re: Übung 11 online!!!!

Verfasst: 31. Jan 2008 16:44
von Wambolo
ups, Posting des Vorgängers überlesen

Re: Übung 11 online!!!!

Verfasst: 31. Jan 2008 17:04
von Osterlaus
Jo(h)nny hat geschrieben:@ChRiZz88, zwischen flight test und delete test müsste noch eine meldung kommen, weil du versuchst zum flüghafen fliegen, den es gar nicht gibt

Code: Alles auswählen

test.deleteAirport("Köln");
		try {
			test.flyTo("Köln");
		} catch (AirborneComputerException e) {
			System.out.println(e.getMessage());
		}
		System.out.println("-----Delete Test finished-----");
also müsste deine delete-methode falsch funktionieren
Außer er wirft gar keinen Fehler ;)

Re: Übung 11 online!!!!

Verfasst: 31. Jan 2008 17:27
von Jo(h)nny
@Osterlaus, nun ja dann funktioniert die flyTo nicht richtig, also auf jedem fall ist da was nicht ganz in ordnung:)