Wie kann ich dieses Zustandsdiagramm am besten Umsetzen? (Java)?

Hey ich muss folgendes Zustandsdiagramm umsetzen:

Folgenden Code habe ich bereits für die Wahl des Getränks geschrieben:

import java.util.Scanner;
public class Getraenkeautomat
{
public static void main(String[] args)
{
boolean automatBereit = true;
int Apfelschorle = 01;
int Cola = 11;
int Spezi = 21;
int Wasser = 31;
int gewaehltesGetraenk;
String Getraenk;

Scanner s = new Scanner(System.in);
System.out.println("BESCHREIBUNG:");
System.out.println("Zuerst Getraenkwaehlen:");
System.out.println("Apfelschorle = 01; Cola = 11; Spezi = 21; Wasser = 31");
System.out.println("Dann entsprechenden Betrag mit folgenden Muenzen bezahlen:");
System.out.println("1 = 1€; 0.5 = 50ct; 0.2 = 20ct");
Getraenk = s.next();
gewaehltesGetraenk = Integer.parseInt(Getraenk);
if (gewaehltesGetraenk == Apfelschorle){
System.out.println("gewaehltes Getraenk: Apfelschorle");
System.out.println("Bitte zahlen sie 1.50€");
}
else{
if(gewaehltesGetraenk == Cola){
System.out.println("gewaehltes Getraenk: Cola");
System.out.println("Bitte zahlen sie 2.00€");
}
else{
if(gewaehltesGetraenk == Spezi){
System.out.println("gewaehltes Getraenk: Spezi");
System.out.println("Bitte zahlen sie 1.70€");
}
else{
if(gewaehltesGetraenk == Wasser){
System.out.println("gewaehltes Getraenk: Wasser");
System.out.println("Bitte zahlen sie 1.00€");
}
}
}
}
}
}

Nur habe ich das Problem, dass ich keine Ahnung habe wie ich am besten die Münzeingabe umsetzen soll. Wie ihr evtl schon dem Code entnehmen konntet kann der Anwendern 1Euro, 50ct und 20 ct Münzen einwerfen. Wenn zuviel eingeworfen wird soll entsprechend das Getränk mit Rückgeld ausgegeben werden, wenn zu wenig eingeworfen wird soll der noch zu bezahlende betrag ausgegeben werden. Ich habe es mit einer Do while schleife probiert bin jedoch auf kein schlüssiges ergebnis gekommen weshalb ich euch diese erspare. Könntet ihr mir dazu einen Ansatz bzw Lösungsvorschlag sagen wie ich den Münzeinwurf umsetzen soll?

Bild zum Beitrag
Computer, programmieren, Java, Informatik
Welche Bedeutung hat dieser Programmcode?

Hallo,

ich habe diesen Code hier entdeckt.

#include <Time.h>
#include <Wire.h>
#include <DS1307RTC.h>
#include <LiquidCrystal_I2C.h> // Bibliotheken laden

LiquidCrystal_I2C lcd(0x3D, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); //Das I²C Display benennen und die HEX-Adresse eingeben (bei uns 0x3D)
void setup()
{
  lcd.begin(16, 2); // Das Display starten, festlegen dass es sich um ein Display mit 16 Zeichen in 2 Zeilen handelt
  lcd.backlight(); // Beleuchtung des Displays einschalten
  Serial.begin(9600); // Serielle Verbindung mit Baurate 9600 starten
  setSyncProvider(RTC.get); // Daten von der RTC abrufen
}

void loop()
{
  Serial.print(hour()); // Serial.print ist der Befehl, etwas im seriellen Monitor anzuzeigen (Stunde, Minute, Sekunde, Leerzeichen, Tag, Leerzeichen, usw.)
  printDigits(minute()); // bei den Minuten und Sekunden wird der Befehl
  printDigits(second()); // printDigits verwendet, welcher am Ende des Codes noch festgelegt wird
  Serial.print(“ „);
  Serial.print(day());
  Serial.print(“ „);
  Serial.print(month());
  Serial.print(“ „);
  Serial.print(year());
  Serial.println();
  delay(1000); // eine Sekunde warten
  lcd.setCursor(2, 0); // setCursor gibt an, wo der Text beginnen soll. In diesem Fall beim dritten Zeichen in der ersten Reihe.
  lcd.print(hour()); // Die Uhrzeit soll angezeigt werden im Format:
  lcd.print(„:“); // Stunden:minuten:sekunden
  lcd.print (minute());
  lcd.print(„:“);
  lcd.print(second());
  lcd.print(“ „);
  lcd.print(„Uhr“); // Dahinter soll das Wort „Uhr“ angezeigt werden
  lcd.print(“ „);
  lcd.print(“ „);
  lcd.print(“ „);
  lcd.setCursor(1, 1); // In der zweiten Zeile soll das Datum angezeigt werden
  lcd.print(day());
  lcd.print(„.“);
  lcd.print(month());
  lcd.print(„.“);
  lcd.print(year());
}

// Der printDigits Befehl für den seriellen Monitor
void printDigits(int digits)
{
  Serial.print(„:“);
  
  if (digits < 10)
    Serial.print(‚0‘);
  
  Serial.print(digits);
}

Bitte beleidigt mich nicht. Ich habe in Sachen Programmieren nicht viel Erfahrung und bin ein Frischling, der nach Antworten sucht. 😀

Meine Frage wäre, warum diese Befehle

lcd.print(„“)

dreimal oder so hintereinander auftauchen. Und warum steht in den Klammern nichts? Kann mich da jemand aufklären?

Ich verstehe die Funktion dieses Codes nicht?

Danke schon einmal im Voraus. 😀

Computer, Technik, programmieren, Informationstechnik, Technologie, Elektrotechnik und Informationstechnik

Meistgelesene Beiträge zum Thema Computer