+ Antworten
Ergebnis 1 bis 6 von 6

Thema: Deterministischer endlicher Automat

  1. #1
    New User Bit Themenstarter

    Registriert seit
    08.01.2017
    Fachbeiträge
    2
    Genannt
    0 Post(s)
    Hallo Leute,
    ich habe muss einen DEA programmieren, dieser soll überprüfen ob ein vorgegebenes Eingabewort korrekt ist und dann ein Ergebnis ausgibt.
    Die Eingabe und Ausgabe soll mit Klasse JOptionPane stattfinden (Ausgabe wie im Bild).
    Die Eingabezeichen sind [ O , - , 4 , i ]
    Der gesamte Programmablauf soll in der Methode public static void main entahlten sein.
    kriege fehlermeldung wenn ich versuche JOptionPane einzufügen.
    Das was ich bis jetzt habe ist dies:

    Java Code:
    1.  
    2. public class DEA22 {
    3.  
    4.     public static char q = 'O';
    5.     public static char w = '-';
    6.     public static char e = '4';
    7.     public static char r = 'i';
    8.  
    9.    public static void main(String[] args){
    10.        String [] Eingabewort = new String[] {"iOOO", "iOi4", "OOiO", "4O-4", "O-O-", "4iO4"};
    11.        for (String string : Eingabewort) {
    12.            if(gültigeeingabe(string)) {
    13.                Ausführung(string);
    14.            }
    15.        }
    16.  
    17.    }
    18.  
    19.    public static boolean gültigeeingabe(String string) {
    20.        if(string == null) {
    21.            System.out.println("Variable string ist "null"");
    22.            return false;
    23.        }
    24.        if(string.length() < 4) {
    25.            System.out.println("Fehler: "" + string + "" ist keine gueltige Eingabe!");
    26.            System.out.println("Min 4 Zeichen duerfen eingegeben werden!");
    27.            return false;
    28.        }
    29.        if(string.length() > 4) {
    30.            System.out.println("Fehler: "" + string + "" ist keine gueltige Eingabe!");
    31.            System.out.println("Max 4 Zeichen duerfen eingegeben werden!");
    32.            return false;
    33.        }
    34.  
    35.        for(char c : string.toCharArray()) {
    36.            if(c != q && c != w && c != e && c != r) {
    37.                System.out.println("Fehler: "" + string + "" ist keine gueltige Eingabe!");
    38.                System.out.println("Erlaubt sind nur folgende Zeichen: " + q + ", " + w + ", " + e + " oder " + r);
    39.                return false;
    40.            }
    41.        }
    42.        return true;
    43.    }
    44.  
    45.  
    46.    public static void Ausführung(String string) {
    47.        char[] chars = string.toCharArray();
    48.        int zustand = 1;
    49.  
    50.        for(char c : chars) {
    51.            if(c == q) {
    52.                switch (zustand) {
    53.                case 0:
    54.                    zustand = 3;
    55.                    break;
    56.                case 1:
    57.                    zustand = 2;
    58.                    break;
    59.                case 2:
    60.                    zustand = 2;
    61.                    break;
    62.                case 3:
    63.                    zustand = 3;
    64.                    break;
    65.                case 4:
    66.                    zustand = 0;
    67.                    break;
    68.                }
    69.            }
    70.            else if(c == w) {
    71.                switch (zustand) {
    72.                case 0:
    73.                    zustand = 2;
    74.                    break;
    75.                case 1:
    76.                    zustand = 0;
    77.                    break;
    78.                case 2:
    79.                    zustand = 3;
    80.                    break;
    81.                case 3:
    82.                    zustand = 3;
    83.                    break;
    84.                case 4:
    85.                    zustand = 4;
    86.                    break;
    87.                }
    88.            }
    89.            else if(c == e) {
    90.                switch (zustand) {
    91.                case 0:
    92.                    zustand = 2;
    93.                    break;
    94.                case 1:
    95.                    zustand = 1;
    96.                    break;
    97.                case 2:
    98.                    zustand = 2;
    99.                    break;
    100.                case 3:
    101.                    zustand = 3;
    102.                    break;
    103.                case 4:
    104.                    zustand = 4;
    105.                    break;
    106.                }
    107.            }
    108.            else if(c == r) {
    109.                switch (zustand) {
    110.                case 0:
    111.                    zustand = 0;
    112.                    break;
    113.                case 1:
    114.                    zustand = 4;
    115.                    break;
    116.                case 2:
    117.                    zustand = 4;
    118.                    break;
    119.                case 3:
    120.                    zustand = 3;
    121.                    break;
    122.                case 4:
    123.                    zustand = 3;
    124.                    break;
    125.                }
    126.            }
    127.        }
    128.        System.out.println("Endzustand: " + zustand + "");
    129.        if(zustand == 3)
    130.            System.out.println("Das Word: "" + string + "" ist gueltig!");
    131.        else
    132.            System.out.println("Das Word: "" + string + "" ist nicht gueltig!");
    133.    }
    134. }
    Geändert von Marco13 (08.01.2017 um 19:26 Uhr) Grund: Code tags

  2. #2
    Global Moderator Viertel Gigabyte
    Registriert seit
    05.08.2008
    Fachbeiträge
    4.901
    Genannt
    307 Post(s)
    Ein Bild war da jetzt nicht dabei, und auch sonst wären mehr Details vielleicht hilfreich. "Irgendeine" Ausgabe mit einer JOptionPane wäre ja nicht so schwierig:
    Java Code:
    1.  
    2. import javax.swing.JOptionPane;
    3.  
    4. public class DEA22 {
    5.  
    6.     public static char q = 'O';
    7.     public static char w = '-';
    8.     public static char e = '4';
    9.     public static char r = 'i';
    10.  
    11.    public static void main(String[] args){
    12.        String [] Eingabewort = new String[] {"iOOO", "iOi4", "OOiO", "4O-4", "O-O-", "4iO4"};
    13.        for (String string : Eingabewort) {
    14.            if(gültigeeingabe(string)) {
    15.                Ausführung(string);
    16.            }
    17.        }
    18.  
    19.    }
    20.  
    21.    public static boolean gültigeeingabe(String string) {
    22.        if(string == null) {
    23.            System.out.println("Variable string ist \"null\"");
    24.            return false;
    25.        }
    26.        if(string.length() < 4) {
    27.            System.out.println("Fehler: \"" + string + "\" ist keine gueltige Eingabe!");
    28.            System.out.println("Min 4 Zeichen duerfen eingegeben werden!");
    29.            return false;
    30.        }
    31.        if(string.length() > 4) {
    32.            System.out.println("Fehler: \"" + string + "\" ist keine gueltige Eingabe!");
    33.            System.out.println("Max 4 Zeichen duerfen eingegeben werden!");
    34.            return false;
    35.        }
    36.  
    37.        for(char c : string.toCharArray()) {
    38.            if(c != q && c != w && c != e && c != r) {
    39.                System.out.println("Fehler: \"" + string + "\" ist keine gueltige Eingabe!");
    40.                System.out.println("Erlaubt sind nur folgende Zeichen: " + q + ", " + w + ", " + e + " oder " + r);
    41.                return false;
    42.            }
    43.        }
    44.        return true;
    45.    }
    46.  
    47.  
    48.    public static void Ausführung(String string) {
    49.        char[] chars = string.toCharArray();
    50.        int zustand = 1;
    51.  
    52.        for(char c : chars) {
    53.            if(c == q) {
    54.                switch (zustand) {
    55.                case 0:
    56.                    zustand = 3;
    57.                    break;
    58.                case 1:
    59.                    zustand = 2;
    60.                    break;
    61.                case 2:
    62.                    zustand = 2;
    63.                    break;
    64.                case 3:
    65.                    zustand = 3;
    66.                    break;
    67.                case 4:
    68.                    zustand = 0;
    69.                    break;
    70.                }
    71.            }
    72.            else if(c == w) {
    73.                switch (zustand) {
    74.                case 0:
    75.                    zustand = 2;
    76.                    break;
    77.                case 1:
    78.                    zustand = 0;
    79.                    break;
    80.                case 2:
    81.                    zustand = 3;
    82.                    break;
    83.                case 3:
    84.                    zustand = 3;
    85.                    break;
    86.                case 4:
    87.                    zustand = 4;
    88.                    break;
    89.                }
    90.            }
    91.            else if(c == e) {
    92.                switch (zustand) {
    93.                case 0:
    94.                    zustand = 2;
    95.                    break;
    96.                case 1:
    97.                    zustand = 1;
    98.                    break;
    99.                case 2:
    100.                    zustand = 2;
    101.                    break;
    102.                case 3:
    103.                    zustand = 3;
    104.                    break;
    105.                case 4:
    106.                    zustand = 4;
    107.                    break;
    108.                }
    109.            }
    110.            else if(c == r) {
    111.                switch (zustand) {
    112.                case 0:
    113.                    zustand = 0;
    114.                    break;
    115.                case 1:
    116.                    zustand = 4;
    117.                    break;
    118.                case 2:
    119.                    zustand = 4;
    120.                    break;
    121.                case 3:
    122.                    zustand = 3;
    123.                    break;
    124.                case 4:
    125.                    zustand = 3;
    126.                    break;
    127.                }
    128.            }
    129.        }
    130.        System.out.println("Endzustand: " + zustand + "");
    131.        if(zustand == 3)
    132.            System.out.println("Das Word: \"" + string + "\" ist gueltig!");
    133.        else
    134.            System.out.println("Das Word: \"" + string + "\" ist nicht gueltig!");
    135.        
    136.        JOptionPane.showMessageDialog(null, "Hier koennte ihre Werbung stehen");
    137.    }
    138. }

  3. #3
    New User Bit Themenstarter

    Registriert seit
    08.01.2017
    Fachbeiträge
    2
    Genannt
    0 Post(s)
    hi marco,
    danke für deine antwort.
    Die Ausgabe des Programms, soll wie in Bild 2 aussehen und der Automat ist wie auf dem Bild 1 zu programmieren.
    der Code sollte richtig sein, wie kriege ich es hin, dass ich die einzelnen Buchstaben [ O , - , 4 , i ] in dialogfenster eingebe und das programm mir die ausgabe wie auf dem Bild 2 im system.out ausgibt?

    Deterministischer endlicher Automat-1.jpgDeterministischer endlicher Automat-2.jpg

  4. #4
    Global Moderator Viertel Gigabyte Avatar von SlaterB
    Registriert seit
    06.08.2008
    Fachbeiträge
    2.695
    Genannt
    275 Post(s)
    Ausgaben (etwa der Ergebnisse) mit JOptionPane sollte das Minimum sein was selbst zu schaffen oder nun praktisch under jeder Suche zu JOptionPane zu finden,
    wenn noch nicht schön formatiert kann man weiter drüber sprechen, aber bisher ist ja gar nichts da
    (ok, Programm mit System.out ist schon sehr viel da, fehlt bei anderen Fragern auch, insofern Lob )

    'kriege fehlermeldung wenn ich versuche JOptionPane einzufügen.' enthält wenig,
    keinen Codeversuch, keine exakte Fehlermeldung,


    -----

    Eingaben mit JOptionPane sind nicht ganz so leicht zu finden, hier ein Link der gut ausreichen sollte:
    https://de.wikibooks.org/wiki/Java_S...ng_JOptionPane
    Hansa wird Meister

  5. #5
    Global Moderator Viertel Gigabyte
    Registriert seit
    05.08.2008
    Fachbeiträge
    4.901
    Genannt
    307 Post(s)
    An der geposteten Ausgabde sehe ich jetzt auch nichts mit einer JOptionPane. Ist der Thread absichtlich "erledigt"?

  6. #6
    Frequent User Megabyte
    Registriert seit
    01.11.2013
    Fachbeiträge
    1.233
    Genannt
    185 Post(s)
    Blog-Einträge
    1
    So, auch Gäste dürfen Themen als "offen"/"geschlossen" markieren ... ?
    Und zu der Frage, soweit ist alles (relativ) richtig,
    zu Beginn (oder zum Schluss) der Schleife (Application main logic) muss allerdings obige Ausgabe erfolgen (Zeile printen...) und auch nochmal der Endzustand geprüft werden.
    Den DEA hätte ich vielleicht etwas anders geschrieben, naja was soll's?
    Näher an den Bits, näher an der Materie
    Deterministischer endlicher Automat

+ Antworten Thema als "offen" markieren

Direkt antworten Direkt antworten

In welchem Jahr endete der 2. Weltkrieg?

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. UML - akzeptierender Automat
    Von Prog1 im Forum Hausaufgaben
    Antworten: 1
    Letzter Beitrag: 04.01.2017, 18:04

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •