ich hoffe ihr könnt mir weiterhelfen. Wie ihr schon gelesen habt, möchte ich ein bestimmtes Attribute aus meiner kompletten ArrayListen index auf derm Bildschirm ausgeben.
Hier der Code:
[Java]
public ArrayList<Flights> getIdentifier(String source, String destination)
{
ArrayList<Flights> result = new ArrayList<Flights>();
for (int i = 0; i<flights.size();i++)
{
if(flights.get(i).getSource().equalsIgnoreCase(source)&&flights.get(i).getDestination().equalsIgnoreCase(destination))
{
result.add(flights.get(i));
}}
return result;
}
[/Java]
Wäre super wenn ihr mir auf die Sprünge helfen könntet.
Und wo ist das Problem? Du hast nur die Anforderung an den Code gepostet aber weder wo das Problem liegt, noch die Datenstrukturen offen gelegt, damit wir uns da hineindenken können.
Ich vermute, dass es daran liegt, dass du keine verschachtelten Schleifen verwendet hast. Du willst alle Elemente einer ArrayList mit allen aus einer anderen vergleichen. Dazu brauchst du, wenn du es mit Brute Force machen willst, zwei verschachtelte Schleifen.
Aber es gibt fast immer einen besseren Weg, als Brute Force.
Tut mir Leid, ich bin schon ganz nebenmir vor lauter programmieren. Angenommen meine ArrayListe "result" wird mit Objekten der Klasse flights gefüllt, wie ist es mir möglich ein Attribut aus all den Indizes der ArrayListe auf dem Bildschirm auszugeben? Z.b möchte ich nun das "result" an eine andere Klasse geben und möchte dort das Attribut Indentifikationsnummer (int) aus all den Indizes der ArrayListe ausgeben? Leider kann ich dir nicht viel mehr code geben, da ich noch keine passende Klasse dafür habe. Ich wollte nur schauen ob das so klappt wie ich das haben möchte. Ich hoffe du hast es verstanden :/
Ja also der return Wert meines aufgeführten Code ist ja eine ArrayList von Objekten. Angenommen ich rufe also die Methode getIdentifier(String source, String destination) auf dann liefert diese mir eine ArrayList mit den Objekten zurück die die gleiche "source" und das gleiche "destination" haben. Nun möchte ich natürlich mit der neuen ArrayList weiterarbeiten und dem jenigen der diese Methode aufgerufen hat Anzeigen welche ID-Nummer/n die Flüge haben die passend zur Sucheingabe sind.
Nun z.b. eine Methode aus der Klasse Client in die man "source" und "destination" eingibt und die mir auf dem Bildschirm die ID-Nummer der Flüge ausspuckt die diesen Abflugsort bzw. das Ziel besitzen
Java:
publicvoidsearchFlights(){String source = IO.promptAndReadString("Bitte geben Sie ihren gewünschten Abflugsort ein: ");String destination = IO.promptAndReadString("Bitte geben Sie ihren gewünschten Zielort ein: ");System.out.println("Die Flüge mit der/den Identifikationsnumer: "+//*Hier möchte ich die Methode getIdentifier(String source, String destination) aufrufen// und nur die ID-Nummer einfügen, wenn ich die Methode aufrufe habe ich bisher ja nur die ArrayList vorliege//wie kann ich also nun aus der ArrayList die ich hier stehen habe meine ID-Nummern anzeigen lassen//also aus allen Flügen die in dieser ArrayList gespeichert sind die ID-Nummern*"fliegen ihre gewünsche Route");}
publicvoidsearchFlights(){String source = IO.promptAndReadString("Bitte geben Sie ihren gewünschten Abflugsort ein: ");String destination = IO.promptAndReadString("Bitte geben Sie ihren gewünschten Zielort ein: ");String flightIds ="";ArrayList<Flights> flights =getIdentifier(source, destination);for(Flights flight : flights){
flightIds +=(flight.getIdentifier()+", ");}System.out.println("Die Flüge mit der/den Identifikationsnumer: "+ flightIds +" fliegen ihre gewünsche Route");}
Dabei ist jedoch noch zu merken, dass die beiden Strings source und destination NULL sein könnten, und so die Methode getIdentifier(...) eine NPE (NullPointerException) auslösen kann...
hey knilch,
genau das habe ich gesucht! Ich hab mir den Code reinkopiert und es funktionert einwandfrei. Könntest du mir bitte kurz die Klammer hinter der for-Schleife erklären?! Ich konnte es leider nicht ganz nachvollziehen.
Hast mir auch jeden fall schon sehr weitergeholfen, danke!
Wo die Klammer steht, ist egal. Der eine Programmierer setzt sie direkt hinter den Schleifenkopf (knilch, ich) und der Andere darunter (du). Dem Kompiler ist es gleich.
Ich halte meine Schreibweise für leichter lesbar aber das ist Geschmackssache.