carookee - group communication for you
Home / JavaForum / Beginner
Infos   |   Features   |   Gold-Edition   |   Kundenservice   
java
  Übersicht
  Forum
Beginner
Java allgemein
JDBC
JNI
Networking
Online-Ressourcen
Swing + AWT
XML
Meckerecke
  Mitglieder
LOGIN





· Passwort vergessen
· Kostenlos anmelden
  Information
  Demo
  Features
  Im Vergleich
  Anmeldung
SUCHE
Beiträge, Foren oder Verfasser finden:
  Kundenservice
  Impressum
  Datenschutz
  AGB
Status
4.999 User online
0 User eingeloggt
 

Beiträge
   Antworten     Neuer Beitrag    

Beitrag 156 von 2963 (5%) |<   <   >   >|

Autor DeaconFrost
Datum 13.01.06, 11:23
Betreff Re: warteschlange


Hallo Sabine,

Ich habe noch ein paar Verständnisprobleme zu deiner Aufgabe:

1) Du schreibst, dass die erste Person 5-10 essen bekommt. Stimmt das wirklich? Ich würde eher erwarten, dass die erste Person 1 essen bekommt und dann gleich zur Kasse geht.

2) Du schreibst, dass Du java.util.Queue verwendest. Das ist aber nur ein Interface (Schnittstelle), keine instanzierbare Klasse. Welche konkrete Klasse verwendest Du denn nun? (Ich würde LinkedList empfehlen, da ausreichend).

Mein Lösungsansatz wäre folgender:
Eine Klasse Person, die das Verhalten einer Person abbildet. Folgende Methoden:
void goCanteen(Canteen c) => Gehe in die Kantine c. Stelle dich bei der Essensausgabe an (irgendeine Schlange oder die Kürzeste, je nach Aufgabenstellung).
void gotFood() => Du hast dein Essen bekommen. Stelle dich jetzt bei der Kassa mit der kürzesten Schlange an.

Eine Klasse Canteen, um die Kantine nachzubilden.
Einen Konstruktor:
Canteen(int nrFoodQueues, int nrCashDesks) ...
Folgende Felder:
LinkedList<Person> foodQueues[] ...
LinkedList<Person> cashDesks[] ...

Folgende Methoden:
void enqueueForFood(Person p) => reiht die Person an der Essensausgabe ein
void enqueueToPay(Person p) => reiht die Person an der Kasse ein
int doRound(void) => lässt das Spiel für eine Runde durchlaufen und gibt das Ergebnis zurück. Konkret:
1) Die vordersten Personen an den Kassen (cashDesks) entfernen (wichtig: Zuerst durchführen, sonst kann in einer Runde möglicherweise ein und dieselbe Person essen bekommen und abkassiert werden!)
2) Die vordersten Personen an den Essensausgaben (foodQueues) aus der Schlange entfernen und die Methode gotFood() aufrufen => die Person reiht sich erneut an der Kasse ein.
3) Die Personen an den foodQueues abzählen und zurückgeben

Dann ist nur noch die main-Methode zu implementieren:
Stelle ich mir dann so vor:
Canteen c = new Canteen(nrFoodQueues, nrCashDesks);
for (int round = 1; round <= nrRounds; round++) {
    // 15 Personen erzeugen und in die Kantine gehen lassen
    for (int j = 1; j <= 15; j++)
    new Person().goCanteen(c);
    // 1 Runde durchspielen
    int result = c.doRound();
    // Resultat ausgeben
    System.out.println("Runde " + round + ": " + result + " Personen stehen noch in der Schlange");
}


Das wäre mein erster Ansatz. Ich hoffe, er hilft dir weiter.

Liebe Grüße,

Deacon Frost




Diskussionsverlauf:
warteschlange
    Re: warteschlange

 Auf diesen Beitrag antworten
 Neuen Beitrag verfassen


|<   <   >   >|

                                                                                                                                                                                                                           

Impressum  · Datenschutz  · AGB  · Infos  · Presse
Ein modernes Forum: teamturn.com