warteschlange

Status
Nicht offen für weitere Antworten.
S

sabinebiene

Gast
hallo zusammen



Mit diesem Programm stimmt etwas nicht:
5-10 Personen in einer Runde stehen an einer Essensausgabe.Dann werden 5-10 Essen an die anstehenden Pesronen ausgeteilt (die erste Person in der Runde wird also 5-10mal bedient!)Personen die essen haben stellen sich an die Kasse mit kürzester Schlange.
Das Programm soll wie folgt aufgerufen werden:
java ... AnzahlAusgaben AnzahlKassen AnzahlRunden

Code:
import java.util.*; 

class Kasse 
{ 
   private int anzahl = 0; 
   public static void main (String[] args) 
   int AnzahlRunden=Integer.parseInt(args[0]); 
   int AnzahlKassen=Integer.parseInt(args[1]); 
   int AnzahlAbgabe=Integer.parseInt(args[2]); 

   private List warteschlange = new ArrayList(); 


   static final int MAX = 1000; 

   synchronized void ankunft() 
   { 
      warteschlange.add("Person " + ++anzahl); 
      notify(); 
      System.out.println("Person " + anzahl + " kommt an"); 
   } 

   synchronized String abfertigung() 
   { 
      while (warteschlange.size() == 0) 
      try 
      { 
         wait(); 
      } 
      catch (InterruptedException ign) 
      { 
      } 
      String s = (String)warteschlange.remove(0); 
      System.out.println(s + " wird bedient"); 
      System.out.println(warteschlange); 
      return s; 
   } 
}

Ich weiss halt nur nicht wie man mit dem Wert AnzahlRunden mehrereRunden ezeugt und sie schließlich an die mehreren Abgabestellen weitergibt und sich an der kürzesten Warteschlange anstellt.

Danke für eure Mühe!

Vielleicht schafft das ja einer von euch!Ich gebe langsam auf
 

MPW

Top Contributor
Also, ich wuerde mir ein Objekt Kasse machen, dass verschiedene Eigenschaften hat, wie z.B. Anzahl Leute, geschwindigkeit der Kassiererin, was du willst...und dann gibt es eine Methode die abfragt, wie viele Leute da stehen und eine ueber die man sich eine Person anstellen laesst. Nun fragst du einfach ab, welche am wenigsten hat(beachte, was passieren soll, wenn zwei gleichviele haben!) und dann addest du die Person da....das was du da gemacht hast ist nicht sehr objektorientiert.

Ausserdem verstehe ich das synchronized nicht, das ist doch ein chaotischer Proezess, das interessante ist doch, zu gucken, was passiert, nicht vorher festzulegen, was wie passieren soll? Oder habe ich die Aufgabe falsch verstanden?
 
B

bygones

Gast
MPW hat gesagt.:
Ausserdem verstehe ich das synchronized nicht, das ist doch ein chaotischer Proezess, das interessante ist doch, zu gucken, was passiert, nicht vorher festzulegen, was wie passieren soll? Oder habe ich die Aufgabe falsch verstanden?
synchronized heißt ja nicht festzulegen was passieren soll - das macht man durch programmieren ;-)

Da es eben Chaos ist und man nicht weiß wie wann und warum welche Warteschlang was macht, muss es synchronisiert werden...

achja und verwende lieber immer notifyAll anstatt notify.
 

MPW

Top Contributor
deathbyaclown hat gesagt.:
MPW hat gesagt.:
Ausserdem verstehe ich das synchronized nicht, das ist doch ein chaotischer Proezess, das interessante ist doch, zu gucken, was passiert, nicht vorher festzulegen, was wie passieren soll? Oder habe ich die Aufgabe falsch verstanden?
synchronized heißt ja nicht festzulegen was passieren soll - das macht man durch programmieren ;-)

Da es eben Chaos ist und man nicht weiß wie wann und warum welche Warteschlang was macht, muss es synchronisiert werden...

achja und verwende lieber immer notifyAll anstatt notify.

ops...naja, wenigstens mein Objektvorschlag war brauchbar.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben