X) 02 Freibier für Alle!

Ihre Wirtschaft ist nun eröffnet und der erste Besucheransturm auf das – reichlich vorhandene – Freibier rollt an. Heute gilt es Ihre Gäste zufrieden zu stellen und keine Wünsche offen zu lassen. Nur so ist ein erfolgreicher Start in Ihr neues Leben als Gastwirt möglich.

Um den Durst der Gäste löschen zu können, haben Sie im Vorfeld 200 Liter Freibier besorgt. Ergänzen Sie hierzu die Main-Methode Ihrer Wirtschafts-Klasse vor der feierlichen Eröffnung um die Variable freibier vom Typ int mit dem Wert 200 (Liter).

int freibier = 200; // Angabe in Liter

Jetzt kann der Tag (mit ein bisschen Mathematik) beginnen! Sie eröffnen Ihre Kneipe zum Weißwurstfrühstück um zehn Uhr mit zwölf Gästen. Alle zwei Stunden kommen neue Gäste hinzu, bis das Gasthaus um 23 Uhr schließt:

  • 12 Uhr => +5 Gäste
  • 14 Uhr => +3 Gäste
  • 16 Uhr => +1 Gäste
  • 18 Uhr => +10 Gäste
  • 20 Uhr => +12 Gäste
  • 22 Uhr => +4 Gäste

Jede Stunde steht die Wahrscheinlichkeit zu ca. 30%, dass sich ein Gast dazu entscheidet zu gehen. Jede halbe Stunde überlegt jeder Gast, ob er noch ein Freibier trinkt. Hierbei entscheidet er sich mit einer Wahrscheinlichkeit von ca. 50% für „ja“. Sollten weniger als 75 Liter Freibier vorhanden sein, müssen Sie dringend nachordern!

Als nächstes gilt es also die aktuelle Uhrzeit (z. B. in einem int) zu speichern, und in einer Schleife die Uhrzeit jedes Mal um eine Stunde zu erhöhen, bis Sie die Wirtschaft um 23 Uhr abschließen. Außerdem müssen Sie die Anzahl der Gäste als int speichern.

for (int uhr = 10, gaeste = 12; uhr < 23; uhr += 1) {
  System.out.println("Es ist " + uhr + " Uhr");	
}

In dieser Schleife überprüfen Sie zuerst, ob eine bestimmte Uhrzeit erreicht ist. Ist dies der Fall, wird die Anzahl der Gäste entsprechend erhöht.

switch (uhr) {
case 12:
  gaeste += 5;
  break;
case 14:
  gaeste += 3;
  break;
case 16:
  gaeste += 1;
  break;
case 18:
  gaeste += 10;
  break;
case 20:
  gaeste += 12;
  break;
case 22:
  gaeste += 4;
}
System.out.println("Es befinden sich: " + gaeste + " Gäste in der Wirtschaft");

Da die Gäste halbstündig entscheiden, ob Sie noch ein Bier trinken oder nicht, benötigen Sie eine weitere Schleife in dieser äußeren Schleife, die bis zwei zählt (zweimal die Stunde wird entschieden, ob ein Bier getrunken wird oder nicht). Auch in dieser Schleife wird wiederum eine verschachtelte Schleife benötigt, die alle Gäste in der Kneipe „anspricht“.

for (int i = 0; i < 2; i++) {
  for (int j = 1; j <= gaeste; j++) {
					
  }
}

Jedes Mal, wenn ein Gast angesprochen wird, wird überprüft, ob dieser ein Bier möchte. Die Chancen dazu stehen 50:50, wie Sie den Angaben entnehmen können. Um einen Zufallswert zu bestimmen, verwenden wir folgende Codezeile Math.random().

Math.random() liefert eine zufällige Zahl zwischen 0 und 1 zurück

Ist die generierte Zahl größer oder gleich 0,5, trinkt der Gast diese Runde ein Bier. Andernfalls wird er kein weiteres Bier bestellen. Natürlich muss das servierte Bier auch von unserem Bestand abgezogen werden.

if (Math.random() >= 0.5) {
  System.out.println("Gast " + j + " bestellt ein Bier");
  freibier--;
}

Nun sollten wir den aktuellen Freibier-Bestand prüfen und ggf. weitere 50 Liter Bier bestellen. Verlassen Sie dazu die beiden letzten Schleifen wieder und schreiben Sie folgenden Code:

System.out.println("Es befinden sich noch " + freibier + " Liter Bier im Lager");
if (freibier < 75) {
  System.out.println("Freibier wird nachgeordert ...");
  freibier += 50;
}

Als letzten Schritt muss bestimmt werden, wie viele Gäste gehen. Auch hierzu verwenden wir wieder die Methode random der Klasse Math.

for (int i = 1; i <= gaeste; i++) {
  if (Math.random() < 0.3) {
    System.out.println("Gast " + i + " verlässt die Wirtschaft");
    gaeste--;
  }
}

Zum Abschluss Ihres ersten, erfolgreichen Tages als Wirt, verlassen auch Sie Ihr Gasthaus und schließen es hinter sich ab.

System.out.println("Wirtschaft abgeschlossen");

Zusammenfassung

package de.jbb.wirtschaft;

public class Wirtschaft {

  public static void main(String[] args) {
		
    int freibier = 200; // Angabe in Liter
    System.out.println("Heute große Eröffnung, Freibier für alle");
    for (int uhr = 10, gaeste = 12; uhr < 23; uhr += 1) {
      System.out.println("Es ist " + uhr + " Uhr");
      switch (uhr) {
      case 12:
        gaeste += 5;
        break;
      case 14:
        gaeste += 3;
        break;
      case 16:
        gaeste += 1;
        break;
      case 18:
        gaeste += 10;
        break;
      case 20:
        gaeste += 12;
        break;
      case 22:
        gaeste += 4;
      }
      System.out.println("Es befinden sich: " + gaeste + " Gäste in der Wirtschaft");
      for (int i = 0; i < 2; i++) {
        for (int j = 1; j <= gaeste; j++) {
          if (Math.random() >= 0.5) {
            System.out.println("Gast " + j + " bestellt ein Bier");
            freibier--;
          }
        }
      }
      System.out.println("Es befinden sich noch " + freibier + " Liter Bier im Lager");
      if (freibier < 75) {
        System.out.println("Freibier wird nachgeordert ...");
        freibier += 50;
      }
      for (int i = 1; i <= gaeste; i++) {
        if (Math.random() < 0.3) {
          System.out.println("Gast " + i + " verlässt die Wirtschaft");
          gaeste--;
        }
      }
    }
    System.out.println("Wirtschaft abgeschlossen");
  }
}

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.