State machine mit enum

ryane

Mitglied
Hallo leute ,
ich brauche mal eure hilfe. Ich möchte ein automat bauen der 4 zustände hat und möchte dafür alle meine state in eine enum definieren und dann mit switch case hin und her gehen .
hat jemand da ein beispiel für mich ? konnte im net nicht fündig werden .
Danke
 
G

Gast2

Gast
Java:
public enum State {
    STATE1, STATE2, STATE3, STATE4
}

in deinem Programm dann:

Java:
switch (myState) {
    case STATE1:
        /** do something */
        break;
    usw.
}

Oder was war die Frage?
 

ryane

Mitglied
Danke aber warum jetzt myState in der switch anweisung ?
muss ich dann die Klasse enum extra schreiben und dann mit extends aufrufen oder kann ich auch gleich enum innerhalb eine vorhandene Klasse definieren ?
 
G

Gast2

Gast
Danke aber warum jetzt myState in der switch anweisung ?
myNum ist der aktuelle Status deines Automaten.

muss ich dann die Klasse enum extra schreiben und dann mit extends aufrufen oder kann ich auch gleich enum innerhalb eine vorhandene Klasse definieren ?
Du kannst entweder dein Enum in einer Extra datei definieren, dann kannst du einfach per State.STATE1 zugreifen. Oder du definierst das enum in einer existierenden Klasse:
Java:
public class Automat {
    enum State {
        STATE1, STATE2, ...
    }

    /** dein code */
}
Dann kannst du innerhalb der Klasser per State.STATE1 zugreifen, und von außerhalb über Automat.State.STATE1.
 

ryane

Mitglied
habe den folgenden code geschrieben aber der geht nicht: sorry , bin ja neu in Programmieren
Java:
public class Automat {
 private enum STATE_TYPE {STATE1 ,STATE2,STATE3, STATE4 }
 private STATE_TYPE myState;
 switch (myState) {
    case  STATE1:
        //something
        // wie weise ich dem Automat dem nächten state hier ?
        // soo etwa : myState=STATE4
        break;
    case STATE3:
        break;
    case STATE4:    
}
 
 
}
 
G

Gast2

Gast
Dein switch kann nicht einfach so im nirgendwo stehen :)

Java:
public class Automat {
    private enum STATE_TYPE {
        STATE1, STATE2, STATE3, STATE4
    }

    private STATE_TYPE myState;

    public void nextState() {
        switch (myState) {
            case STATE1:
                //something
                // wie weise ich dem Automat dem nächten state hier ?
                myState = STATE_TYPE.STATE2;
                break;
            case STATE3:
                break;
            case STATE4:
        }
    }
}
 

Landei

Top Contributor
switch kann nicht einfach so im Klassenkörper stehen, sondern in eine Methode.

Mal aus'm Kopp (ungetestet):
Java:
import java.util.Random;

public class Automat {
 private enum STATE_TYPE {STATE1 ,STATE2,STATE3, STATE4, END }
 private static Random random = new Random();  

 public static void main(String[] args) { 
     STATE_TYPE myState = STATE_TYPE.STATE1;
     while(myState != STATE_TYPE.END) {
          System.out.println("State is " + myState);
          switch (myState) {
              case  STATE1: myState = STATE2;  break;
              case  STATE2: myState = STATE3;  break;
              case  STATE3: myState = STATE4;  break;
              case  STATE4: 
                    //damit es ein wenig interessanter wird, etwas Zufall:
                    int r = random.nextInt(3);
                    if (r == 0) {
                          myState = STATE1;
                    } else if (r == 1) {
                          myState = STATE3;
                    } else {
                          myState = END;
                    }
                    break;
              default : break;  
           }
       }
   }
}
Ich hab mal alles ganz simpel in main gepackt, man kann es auch hübscher mit einer Automaten-Instanz und so machen.
 
Zuletzt bearbeitet:

Landei

Top Contributor
Ich meinte, man kann auch in main mit new ein Automaten-Objekt ("Instanz") erzeugen, und dort "weiterarbeiten", was etwas objektorientierter wäre. Generell ist es kein guter Stil, einfach alles in die main-Methode zu quetschen, sondern man versucht normalerweise, die einzelnen Schritte mittels Objekten und deren Methoden sinnvoll zu gliedern (der Code von EikeB geht in diese Richtung, es fehlt aber noch der richtige Aufruf).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Compiler-Fehler State Machine - Compiler Error Java Basics - Anfänger-Themen 48
P State Machine, Visitor Java Basics - Anfänger-Themen 5
T Wahrscheinlichkeiten für Slot Machine Java Basics - Anfänger-Themen 13
K Failed to create the Java Virtual Machine Java Basics - Anfänger-Themen 1
C Programm JAR startet nicht - Could not create the Java Virtual Machine Java Basics - Anfänger-Themen 4
turmaline Java Virtual Machine Launcher Problem Java Basics - Anfänger-Themen 1
T Projekt: Slot Machine Java Basics - Anfänger-Themen 23
S "Segmentation fault" Virtual Machine Konfiguration Großrechner? Java Basics - Anfänger-Themen 115
Sebi probleme mit virtul machine luncher Java Basics - Anfänger-Themen 7
G Java Hotspot Virtual Machine Java Basics - Anfänger-Themen 6
Z Coult not create the Java virtual machine. Java Basics - Anfänger-Themen 2
S die java machine läuft viel zuuuu langsam, woher kommt das?? Java Basics - Anfänger-Themen 3
P Enum oder normale Klasse? Java Basics - Anfänger-Themen 10
volcanos enum und switch (neu): falschen Wert mit IllegalArgumentException oder mit EnumConstantNotPresentException abfangen ? Java Basics - Anfänger-Themen 51
X Enum Abfrage ohne if, for, while oder switch Java Basics - Anfänger-Themen 21
U Warum kann ich die Methode in der ENUM Klasse nicht aufrufen? Und warum geht die Switch nicht? Java Basics - Anfänger-Themen 8
D Frage bzgl. Enum-Handhabung Java Basics - Anfänger-Themen 16
S Java Enum Java Basics - Anfänger-Themen 2
I Validation, ob String ein Wert aus einem Enum enthält Java Basics - Anfänger-Themen 3
V Enum Java Basics - Anfänger-Themen 1
C Farben als Enum Java Basics - Anfänger-Themen 3
N enum Attribut von Objekten einer Hashmap ausgeben Java Basics - Anfänger-Themen 6
I JAXB und Enum Java Basics - Anfänger-Themen 7
M Enum-Variable HashMap zuweisen Java Basics - Anfänger-Themen 5
B Enum innerhalb einer Klasse / anderes Konzept Java Basics - Anfänger-Themen 8
N Enum Typen, was passiert intern mit ihnen? Java Basics - Anfänger-Themen 2
A enum Java Basics - Anfänger-Themen 6
O Enum Array Rekursiv abarbeiten Java Basics - Anfänger-Themen 44
B ENUM to List<String> konvertieren Java Basics - Anfänger-Themen 2
N Java Enum converter Methode Java Basics - Anfänger-Themen 5
F Enum von Ländern Java Basics - Anfänger-Themen 8
J Klassen Enum als Informationsträger Java Basics - Anfänger-Themen 10
T Datentypen enum static Chaos (blutiger anfänger) Java Basics - Anfänger-Themen 5
R Enum ist das gleiche wie? Java Basics - Anfänger-Themen 15
P Klassen Richtige Anwendung einer Enum-Klasse Java Basics - Anfänger-Themen 11
E Datentypen Problem beim Speichern von enum. Java Basics - Anfänger-Themen 10
J Compiler-Fehler class interface or enum expected Java Basics - Anfänger-Themen 1
E Objektvergleich Enum Java Basics - Anfänger-Themen 7
kilopack15 Euromünzen in enum als Liste ausgeben Java Basics - Anfänger-Themen 11
N Enum als generischer Typ Java Basics - Anfänger-Themen 4
H Datentypen Fehler bei Verwendung von enum Java Basics - Anfänger-Themen 9
lBlKha0s Fehlermeldung : class interface or enum expected Java Basics - Anfänger-Themen 9
T error: class, interface, or enum expected Java Basics - Anfänger-Themen 5
S Menüauswahl per Enum Java Basics - Anfänger-Themen 12
F Enum via String definieren Java Basics - Anfänger-Themen 2
L Compiler-Fehler error: class, interface or enum expected Java Basics - Anfänger-Themen 2
M java.lang.Enum.valueOf(Unknown Source) Java Basics - Anfänger-Themen 2
M Enum-Variabel-Abfrage funktioniert nicht? Java Basics - Anfänger-Themen 2
P Fallunterscheidung mit Überprüfung (enum) Java Basics - Anfänger-Themen 11
H enum Type Java Basics - Anfänger-Themen 6
F Operatoren Enum aus Textdabei laden Java Basics - Anfänger-Themen 3
P enum: cannot be resolved to a type Java Basics - Anfänger-Themen 2
kaoZ Variablen Konstantensammlung vs. Enum Java Basics - Anfänger-Themen 9
H Enum außerhalb einer Klasse? Java Basics - Anfänger-Themen 2
K OOP Aufzählungstypen! enum Currency!!! Java Basics - Anfänger-Themen 5
F ENUM als Variable Java Basics - Anfänger-Themen 4
M Enum: Zugriff auf Konstanten Java Basics - Anfänger-Themen 7
W Enum Konstruktor Type Java Basics - Anfänger-Themen 2
A Erste Schritte ENUM - Werte zurückgeben Java Basics - Anfänger-Themen 5
D Enum als Parameter Java Basics - Anfänger-Themen 6
B Variablen Instanz von Enum zur Laufzeit erstellen und zuweisen Java Basics - Anfänger-Themen 2
B Datentypen Enum vererben/gruppieren? Java Basics - Anfänger-Themen 6
F Datentypen enum Java Basics - Anfänger-Themen 5
J Enum zählen Java Basics - Anfänger-Themen 8
D Einlesen eines Enum-Wertes per console Java Basics - Anfänger-Themen 3
K String mit ENUM vergleichen? Java Basics - Anfänger-Themen 6
N enum vergleiche Klammern? Java Basics - Anfänger-Themen 5
J public enum? in Java Java Basics - Anfänger-Themen 9
D Erste Schritte Enum - das unbekannte Wesen Java Basics - Anfänger-Themen 3
Y ENUM auslesen (Name des ENUM als Variable) Java Basics - Anfänger-Themen 4
P Compiler-Fehler "class, interface, or enum expected" Java Basics - Anfänger-Themen 5
K class, interface or enum expected Java Basics - Anfänger-Themen 14
pg1337 enum-Aufgabe Java Basics - Anfänger-Themen 5
N was sagt enum aus? Java Basics - Anfänger-Themen 3
S Methoden Enum Parameter in Methode Java Basics - Anfänger-Themen 7
G Datentypen enum Frage Java Basics - Anfänger-Themen 3
R Probleme mit Enum Java Basics - Anfänger-Themen 10
B Enum: Instanzen Java Basics - Anfänger-Themen 10
B Generic? Enum - So lösbar? Java Basics - Anfänger-Themen 8
T class, interface, or enum expected Java Basics - Anfänger-Themen 2
M Vererbung Enum Vererbung/Polymorphie Java Basics - Anfänger-Themen 2
P Enum Attribut in Konstruktoren Java Basics - Anfänger-Themen 10
4 Enum Problem Java Basics - Anfänger-Themen 2
turmaline Bindestrich in enum? Java Basics - Anfänger-Themen 5
T Enum - Key als Value ermitteln Java Basics - Anfänger-Themen 7
X enum Fehlermeldung "The public type Day must be defined in its own file" Java Basics - Anfänger-Themen 8
T ist enum.ordinal keine Konstante? Java Basics - Anfänger-Themen 7
L enum aus Integer umwandeln Java Basics - Anfänger-Themen 3
C Klasseninstanzierung mit enum-Parameter erzwingen Java Basics - Anfänger-Themen 2
I Enum in String Java Basics - Anfänger-Themen 4
N enum richtig verwenden Java Basics - Anfänger-Themen 5
M for(Enum..., ButtonGroup.getElements()... Java Basics - Anfänger-Themen 3
StrikeTom Fragen zu enum Java Basics - Anfänger-Themen 4
A Was ist performanter für Konstanten, enum oder static variablen Java Basics - Anfänger-Themen 5
L String zu Enum parsen Java Basics - Anfänger-Themen 8
J Datentypen Array in enum, ?? Wozu ?? Java Basics - Anfänger-Themen 3
S OOP Durch ein Enum iterieren... Java Basics - Anfänger-Themen 47
K Datentypen enum und liste Java Basics - Anfänger-Themen 7
S String - Enum Java Basics - Anfänger-Themen 3
H Eine enum switchen? Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben