Automaten implementieren

Hecke

Aktives Mitglied
Hey Leute,
Ich stehe leider momentan mit dem Rücken zur Wand.

Ich soll als Hausaufgabe einen Automaten implementieren.

Folgende Klassen habe ich bis jetzt:

Automat:
Java:
//  Klasse zur Syntaxanalyse mit einem endlichen Automaten



public class Automat1   
{   
   String parseStrg;
   boolean ok = true;
   char zeichen;

    // Konstruktor 
   
    public Automat1 (String s)   
    {   
        parseStrg = s;
    }
    
    char cutFirst ()   
    {    
       if (parseStrg.length() == 0)
            return '$';
       else    
       {        
            char first =parseStrg.charAt(0);
            parseStrg=parseStrg.substring (1);
            return first;
       }
    }
    
    public boolean sagtJa ()
    {
        final int z0 = 0, z1 = 1, z2 = 2, z3 = 3, err = 4;
        zeichen = cutFirst ();
        int zustand = z0;
        while (zeichen != '$')
        {
            switch(zustand)
            {
                case z0: if(zeichen >= '0' && zeichen <= '9')
                             zustand = z1;
                         else
                             zustand = err;
                         break;
                case z1 :

                    break;
                default:

            }
        }
        return (ok & (zeichen =='$'));
    }
}

EinAus:
Java:
//  Einfache graphische Benutzeroberfläche für Programme zur Syntaxanalyse.

//

import java.awt.*;
import java.awt.event.*;
import javax.swing.*; 

public class EinAus extends JFrame implements ActionListener 
{  
  
  private JTextField EingabeFeld, AusgabeFeld;
               
   public EinAus()   
   {  
     super("Syntaxanalyse durch Automaten");
      this.getContentPane().setBackground(Color.lightGray);
      this.getContentPane().setLayout(new FlowLayout());
      //Dialog-Button
      JButton button = new JButton("Analyse");
      button.setBackground(Color.red);
      button.addActionListener(this);
      this.getContentPane().add(button);
      //Ende-Button
      button = new JButton("Ende");
      button.setBackground(Color.red);
      button.addActionListener(this);
      this.getContentPane().add(button);
      //Eingabe-Textfeld
      EingabeFeld = new JTextField (20);
      this.getContentPane().add (EingabeFeld);
      //Ausgabe-Textfeld
      AusgabeFeld = new JTextField (20);
      this.getContentPane().add (AusgabeFeld);
   }

   public void actionPerformed(ActionEvent event)   
   {  
      String cmd = event.getActionCommand();
      String antwort, quelltext;
      if (cmd.equals("Analyse")) 
      {   
        String zeile = EingabeFeld.getText();
         //Erzeugen und Initialisieren des Automaten
         Automat1 meinAutomat = new Automat1 (zeile);
         if (meinAutomat.sagtJa())   
            AusgabeFeld.setText ("Ja");
        else
            AusgabeFeld.setText ("Nein");
      } 
      else if (cmd.equals("Ende")) 
      { 
        setVisible(false);
         dispose();
         System.exit(0);
      }
   }
}

Starter:
Java:
//  Starter für Programme zur Syntaxanalyse.

//

public class Starter   
{
   public static void main(String[] args)   
   {  
     EinAus wnd = new EinAus();
      wnd.setSize(600,400);
      wnd.setVisible(true);
   }  
}


Die Aufgabe lautet folgendermaßen:
Code:
Terminale Symbole sind die Ziffern 0-9, . , + , - und E.
Ein String über T gehört dann zur formalen Sprache L. wenn er eine Dezimalzahl 
in der üblichen Gleitkommaform mit maximal 2 Ziffern im Exponentialteil darstellt.



In "Automat1" muss ich doch jetzt wohl etwas bei dem switch und case verändern, damit der Automat überhaupt erst einmal funktioniert.
Wie ich dann aber zusätzlich noch das aufgabenspezifische erledigen soll, bleibt mir ein Rätsel!?


Vielen Dank!
 
Zuletzt bearbeitet von einem Moderator:
M

Marcinek

Gast
Java:
zustand = 1;
error = false;
do {
  zeichen = nextZeichen();

   if(zustand == 1) {
       if(zeichen 1..9) {
          zustand = 1; // also kann man das weglassen
       }
       if(zeichen == "+") {
         zustand = 2;
       }
   } else if(zustand = 2) {
     if(zeichen 1..9) {
          zustand = 3;
       }
   } else if(zustand = 3)
    
   } else if(zustand = 4)

   }
while(zeichen != '$' && !error);

if(zustand == 5)

return true; // Wort akzeptiert else false
else false;
 
Zuletzt bearbeitet von einem Moderator:

Marco13

Top Contributor
Kannst du die Frage irgendwie präzisieren? Ich denke, du wirst den String zerlegen und durch die Zustände wandern müssen...
Java:
while (zeichen != '$')
   switch (zeichen) { ... }

   if (zustant == err) break;
   zeichen = cutFirst();
}
 

XHelp

Top Contributor
Naja, in deinem Automaten fehlen ein paar Zustände. Mal ihn dir erstmal auf, dann wirst du sehen was du noch machen musst.
Generell könntest du dir überlegen
Code:
DFA
Klasse zu machen, die allgemein ist und dann die mit Übergängen füttern, so dass du deinen gewünschten DFA bekommst.
 

Hecke

Aktives Mitglied
Ganz vielen Dank für eure Antworten.

Aber ich bin leider einfach zu dämlich dazu :'(

Ich probiere es die ganze Zeit mal so, mal so...

...läuft morgen wieder darauf hinaus, dass ich nichts vorweisen kann und mir wieder eine Sschlechte Note einhandel :(
 

Hecke

Aktives Mitglied
:D
Naja, stimmt auf mich doch aber nicht wirklich, finde ich.

Ich war doch nicht dreist, womit der erste Punkt schon widerlegt wäre ;)
 
M

Marcinek

Gast
Möglicherweise überspringst du einige Phasen direkt ;D

Hast du den Automaten schon gezeichnet?

Uploade mal.

Ich kann dir Anbieten das in einem TS3 zu klären, habe gerade ehh nix zu tun
 
Zuletzt bearbeitet von einem Moderator:

Hecke

Aktives Mitglied
Probiere geradfe zu zeichnen. Ja, TS3 wäre natürlich klasse, wenn du wirklich strapazierfähige Nerven hast :)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Wolfram zelluläre Automaten Java Basics - Anfänger-Themen 20
R Projektidee Automaten in Java Java Basics - Anfänger-Themen 7
Maxq Klassen Actionen in Button implementieren Java Basics - Anfänger-Themen 6
A LinkedList implementieren Java Basics - Anfänger-Themen 32
_so_far_away_ Inventarisierungssystem brauche switch Cases und weiß nicht, wie ich e implementieren muss Java Basics - Anfänger-Themen 5
new_to_coding Rekursive Reihe implementieren Java Basics - Anfänger-Themen 1
HolyFUT Javax Websocket API implementieren Java Basics - Anfänger-Themen 14
J Interface Interface korrekt implementieren Java Basics - Anfänger-Themen 5
M Wie kann ich eine Methode aus einem Interface in eine Klasse implementieren, so dass sie ihre Funktion ausführt? Java Basics - Anfänger-Themen 7
P9cman Ampel in Java implementieren Java Basics - Anfänger-Themen 3
districon Generics implementieren Java Basics - Anfänger-Themen 2
W UML Diagramm implementieren Java Basics - Anfänger-Themen 2
tony241188 Implementieren Sie die Klasse Hersteller, welche die folgenden Elektrogeräte produziert Java Basics - Anfänger-Themen 3
R Taxistand Implementieren Java Basics - Anfänger-Themen 1
CptK Generics: Klassen die Interface implementieren, aber selbst nicht das Interface sind Java Basics - Anfänger-Themen 8
Gaudimagspam BMI in Java implementieren Java Basics - Anfänger-Themen 38
T Methode implementieren Java Basics - Anfänger-Themen 21
R Implementieren einer iterativen und rekursiven Klassenmethode. Java Basics - Anfänger-Themen 1
L Methode implementieren, Parameter die übergeben werden sind final Java Basics - Anfänger-Themen 4
J alternierendes Probing-Verfahren für Hash-Tabellen implementieren Java Basics - Anfänger-Themen 0
B UML-Klassendiagram get und set implementieren Java Basics - Anfänger-Themen 2
M Implementieren einer Datenstruktur, welche nur 5 Objekte speichert Java Basics - Anfänger-Themen 3
U Hashmap Iterator selbst implementieren Java Basics - Anfänger-Themen 10
E Klassen implementieren Java Basics - Anfänger-Themen 94
S Tokenizer selbst implementieren Java Basics - Anfänger-Themen 1
C Telefonliste mit interface implementieren Java Basics - Anfänger-Themen 30
L Klassen Kann eine Unterklasse einer abstrakten Klasse ein Interface implementieren? Java Basics - Anfänger-Themen 2
B Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 8
M WindowStateListener selbst implementieren Java Basics - Anfänger-Themen 8
J Algorithmus für eine Reihe implementieren Java Basics - Anfänger-Themen 2
F Kindklassen sollen Ihre Methoden selbst implementieren Java Basics - Anfänger-Themen 5
pkm Interface Funktionales Interface lässt sich nicht implementieren. Java Basics - Anfänger-Themen 2
N Verkettete Liste implementieren Java Basics - Anfänger-Themen 5
N Stacks und Queues Implementieren Java Basics - Anfänger-Themen 2
R Listen richtig implementieren Java Basics - Anfänger-Themen 3
Shizmo Methoden Formel besser implementieren Java Basics - Anfänger-Themen 8
X Polynome implementieren Java Basics - Anfänger-Themen 3
O Methoden implementieren, Sichtbarkeiten, Brüche Java Basics - Anfänger-Themen 104
D Erste Schritte Weitere Befehle implementieren Java Basics - Anfänger-Themen 27
D Erste Schritte Befehl back implementieren Java Basics - Anfänger-Themen 18
B Formel in Java implementieren Java Basics - Anfänger-Themen 4
M Suchbaum implementieren Java Basics - Anfänger-Themen 8
S Implementieren zweier Klassen Java Basics - Anfänger-Themen 5
Hacer Interfaces implementieren Java Basics - Anfänger-Themen 7
C Zyklisch verkette Liste - Pop() methode implementieren Java Basics - Anfänger-Themen 2
N Eigene Stream Methoden implementieren Java Basics - Anfänger-Themen 3
L LinkedList Comparable < > MEHRFACH implementieren? Java Basics - Anfänger-Themen 3
K Klassen implementieren Java Basics - Anfänger-Themen 7
W Neue Klassenmethode implementieren.. Java Basics - Anfänger-Themen 6
U Datentypen Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 13
C UML Diagramm in Java implementieren-Korrektur Java Basics - Anfänger-Themen 8
T Equal Methode implementieren Java Basics - Anfänger-Themen 22
C ZahlenMuster implementieren Java Basics - Anfänger-Themen 1
C Alte Klausuraufgabe - UML in Java implementieren Java Basics - Anfänger-Themen 1
D Erste Schritte spielfeld als Datenspeicher implementieren Java Basics - Anfänger-Themen 1
D spielfeld als Datenspeicher implementieren Java Basics - Anfänger-Themen 5
J Builder Pattern implementieren Java Basics - Anfänger-Themen 3
B Sortierte Liste implementieren Java Basics - Anfänger-Themen 3
L Liste mittels Stack implementieren Java Basics - Anfänger-Themen 0
K Iterator-Interface implementieren mit Exception Handlung Java Basics - Anfänger-Themen 1
D Weihnachtsbaum implementieren gescheitert. Java Basics - Anfänger-Themen 2
D Tannenbaum implementieren gescheitert Java Basics - Anfänger-Themen 1
D Interface Interfaces und abstrakte Klassen implementieren Java Basics - Anfänger-Themen 4
F ArrayListen auf anderer Klasse implementieren Java Basics - Anfänger-Themen 4
S Generische Methode soll Objekte als Parameter erlauben die bestimmtes Interface implementieren^ Java Basics - Anfänger-Themen 9
D Methoden Implementieren von einer Zoomfunktion innerhalb eines JPanels mit null-Layoutmanager Java Basics - Anfänger-Themen 1
G Erbklasse verpflichten Methode zu implementieren Java Basics - Anfänger-Themen 3
D Algorithmus zu gegebener Laufzeit implementieren Java Basics - Anfänger-Themen 1
G einfache Leet-Übersetzung implementieren und benutzen Java Basics - Anfänger-Themen 14
B Binärbaum mit java implementieren! Java Basics - Anfänger-Themen 5
C Klassendesign / Wann Interface implementieren und wann Klassen vererben? Java Basics - Anfänger-Themen 3
D Exception selbst Implementieren Java Basics - Anfänger-Themen 1
T QuickSort implementieren Java Basics - Anfänger-Themen 5
J Konstruktor implementieren, zahl 0 repräsentieren Java Basics - Anfänger-Themen 4
C Frage zum Kartenspiel implementieren Java Basics - Anfänger-Themen 9
shiroX OOP Java Funktion implementieren Java Basics - Anfänger-Themen 3
T Ampel implementieren Java Basics - Anfänger-Themen 12
S Interface Implementieren von Methoden aus einer Klasse in eine GUI Java Basics - Anfänger-Themen 6
H Methoden Implementieren "Drücken Sie eine beliebige Taste" Java Basics - Anfänger-Themen 5
G ActionListener implementieren Java Basics - Anfänger-Themen 12
G Szenario implementieren Java Basics - Anfänger-Themen 7
T Methode Implementieren Java Basics - Anfänger-Themen 15
I Taschenrechner - Methoden implementieren Java Basics - Anfänger-Themen 5
T Interface implementieren mit Abstrakten Typen? Java Basics - Anfänger-Themen 4
T Interface Implementieren Java Basics - Anfänger-Themen 5
T Methoden Wie compareTo() Methode implementieren? Java Basics - Anfänger-Themen 9
D Artikel-Suche implementieren Java Basics - Anfänger-Themen 7
S Implementieren? Java Basics - Anfänger-Themen 9
R Alle Klassen ermitteln, die Interface implementieren / Reflection Java Basics - Anfänger-Themen 51
P einen binärbaum implementieren Java Basics - Anfänger-Themen 4
K Terminplaner implementieren Java Basics - Anfänger-Themen 49
F JSlider korrekt implementieren Java Basics - Anfänger-Themen 19
D Wie Iterator Remove implementieren? Java Basics - Anfänger-Themen 11
U Automatenprüfung in Java implementieren — String Vergleich klappt nicht Java Basics - Anfänger-Themen 40
V Hilfe beim implementieren von Iterator Java Basics - Anfänger-Themen 5
T Vorbereitung für das Implementieren von Programmen Java Basics - Anfänger-Themen 3
B PriorityQueue im dijkstra Algorithmus implementieren Java Basics - Anfänger-Themen 4
M Methoden implementieren? Java Basics - Anfänger-Themen 8
S Klasse als Attribut implementieren Java Basics - Anfänger-Themen 2
A Proxy Pattern implementieren Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben