Ampel automatisch umschalten

G

Guest1760

Gast
Hallo ich wollte ein Projekt erstellen womit man eine Fußgänger ampel in java erstellt. Das ist das was bisher bei mir rausgekommen ist.

Java:
class FUSSGAENGERAMPEL
{


    enum Zustaende {rot, gelbrot, gruen, gelb, kaputt};
    int positionX;
    int positionY;
    int x =1000;
    
    String ampelphase;
    
    Zustaende zustand;

    LAMPE lampeOben;
    LAMPE lampeMitte;
    LAMPE lampeUnten;
    
    


   FUSSGAENGERAMPEL()  
   
   {
        positionX = 1;
        positionY = 1;
        ampelphase = "rot";
       
        x =1000;
        lampeOben = new LAMPE();
        lampeMitte = new LAMPE();
        lampeUnten = new LAMPE();
        lampeOben.PositionSetzen(1, 1);
        lampeMitte.PositionSetzen(1, 2);
        lampeUnten.PositionSetzen(1, 3);
        lampeOben.FarbeSetzen("rot");
        lampeMitte.FarbeSetzen("schwarz");
        lampeUnten.FarbeSetzen("schwarz");
        
    }
    
            void AmpelAn ()
  {
                     
            zustand = Zustaende. rot;
            lampeOben.FarbeSetzen ("rot");
            lampeMitte.FarbeSetzen ("schwarz");
            lampeUnten.FarbeSetzen ("schwarz");
            
                    
           
            zustand = Zustaende. gelbrot;
            lampeOben.FarbeSetzen ("rot");
            lampeMitte.FarbeSetzen ("gelb");
            lampeUnten.FarbeSetzen ("schwarz");
        
     
        
            zustand = Zustaende. gelb;
            lampeOben.FarbeSetzen ("schwarz");
            lampeMitte.FarbeSetzen ("gelb");
            lampeUnten.FarbeSetzen ("schwarz");
        
   
        
        
            zustand = Zustaende. gruen;
            lampeOben.FarbeSetzen ("schwarz");
            lampeMitte.FarbeSetzen ("schwarz");
            lampeUnten.FarbeSetzen ("gruen");
        }
        
        void AmpelAus ()
             
        {
            zustand = Zustaende. kaputt;
            lampeOben.FarbeSetzen ("schwarz");
            lampeMitte.FarbeSetzen ("schwarz");
            lampeUnten.FarbeSetzen ("schwarz");
            
        }
            
    }

Was ich ändern wollen würde ist, dass ich nach jeweils den Zustaenden. rot, Zustaenden.gelbrot, Zustaenden.gelb, einen art timer einstelle der sagt nach 10 sek schaltet die ampel automatisch von rot nach gelbrot nach grün, nach gelb usw... Geht das?
Wenn ja erklärt mir bitte wie ich das einrichten kann


Danke

Gruß

Christian
 
Zuletzt bearbeitet von einem Moderator:

nrg

Top Contributor
Kannst einen Thread erstellen, der das dann permanent macht:
Java:
public class Test extends Thread {
	public static void main(String[] args) {
		new Test().start();
	}
	public void run() {
		while (true) {
			try {
				//Ampel auf Grün setzen
				Thread.sleep(10000);
				//Ampel auf Gelb setzen
				Thread.sleep(1000);
				//Ampel auf Rot setzen
				Thread.sleep(10000);
				//Ampel auf Gelbrot setzen
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
}
 

nrg

Top Contributor
einfach so mit copy paste wird das wohl nichts. würde mir etwas fachliteratur über threads anschauen, um das - wie von dir gewünscht - umzusetzen.
 
Q

Quest1760

Gast
Was mach ich nun eigentlich wenn ich machen will dass er auch noch void stop() oder so was hat?

Java:
public class AMPEL extends Thread {
    public static void main(String[] args) {
        new AMPEL().start();
    }
    
    enum Zustaende {rot, gelbrot, gruen, gelb, kaputt};
    int positionX;
    int positionY;
    int x =1000;
    String ampelphase; 
    Zustaende zustand;
    
    
    LAMPE lampeOben;
    LAMPE lampeMitte;
    LAMPE lampeUnten;
    
    void FUSSGAENGERAMPEL()  
   
   {
        positionX = 1;
        positionY = 1;
        ampelphase = "rot";
       
        x =1000;
        lampeOben = new LAMPE();
        lampeMitte = new LAMPE();
        lampeUnten = new LAMPE();
        lampeOben.PositionSetzen(1, 1);
        lampeMitte.PositionSetzen(1, 2);
        lampeUnten.PositionSetzen(1, 3);
        lampeOben.FarbeSetzen("rot");
        lampeMitte.FarbeSetzen("schwarz");
        lampeUnten.FarbeSetzen("schwarz");
        
    }
   
    
    public void run() {
        while (true) {
            try {
                

            
            {
                
            zustand = Zustaende. gruen;
            lampeOben.FarbeSetzen ("schwarz");
            lampeMitte.FarbeSetzen ("schwarz");
            lampeUnten.FarbeSetzen ("gruen");
                
                //Ampel auf Grün setzen
                Thread.sleep(10000);
                
            zustand = Zustaende. gelb;
            lampeOben.FarbeSetzen ("schwarz");
            lampeMitte.FarbeSetzen ("gelb");
            lampeUnten.FarbeSetzen ("schwarz");
                
                //Ampel auf Gelb setzen
                Thread.sleep(1000);
                
                zustand = Zustaende. rot;
            lampeOben.FarbeSetzen ("rot");
            lampeMitte.FarbeSetzen ("schwarz");
            lampeUnten.FarbeSetzen ("schwarz");
            
                //Ampel auf Rot setzen
                Thread.sleep(10000);
                
                 zustand = Zustaende. gelbrot;
            lampeOben.FarbeSetzen ("rot");
            lampeMitte.FarbeSetzen ("gelb");
            lampeUnten.FarbeSetzen ("schwarz");
                
                //Ampel auf Gelbrot setzen
                Thread.sleep(1000);
            }} catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
     public void stop()
     
     {
            zustand = Zustaende. kaputt;
            lampeOben.FarbeSetzen ("schwarz");
            lampeMitte.FarbeSetzen ("schwarz");
            lampeUnten.FarbeSetzen ("schwarz");
        } 

}

wenn ich das so mache, dann kommt ein fehler:

stop() in AMPEL cannot override stop() in java.lang.Thread; overridden method is final


Wie kann ich das ändern?

LG
Christian
 

Ziegenpeter

Aktives Mitglied
Wie in der Fehlermeldung ja schon zu lesen ist, gibt es in der Klasse Thread die Methode stop(). Daher benenn doch deine stop()-Methode einfach in stoppeAmpel() um. Problem sollte dann gelöst sein.
 

nrg

Top Contributor
naja imho nicht. der thread wird trotzdem weiterlaufen. kurz wird die ampel ausgeschaltet bis eben der zugleich laufende sleep beendet ist und die ampel im thread wieder umschaltet.
 

Ziegenpeter

Aktives Mitglied
Ach ok, ja er will ja auch den Thread stoppen. Du machst also folgendes:

Java:
public void run() {
        while (!isInterrupted()) {
            try {
                
 
            
            {
                
            zustand = Zustaende. gruen;
            lampeOben.FarbeSetzen ("schwarz");
            lampeMitte.FarbeSetzen ("schwarz");
            lampeUnten.FarbeSetzen ("gruen");
                
                //Ampel auf Grün setzen
                Thread.sleep(10000);
                
            zustand = Zustaende. gelb;
            lampeOben.FarbeSetzen ("schwarz");
            lampeMitte.FarbeSetzen ("gelb");
            lampeUnten.FarbeSetzen ("schwarz");
                
                //Ampel auf Gelb setzen
                Thread.sleep(1000);
                
                zustand = Zustaende. rot;
            lampeOben.FarbeSetzen ("rot");
            lampeMitte.FarbeSetzen ("schwarz");
            lampeUnten.FarbeSetzen ("schwarz");
            
                //Ampel auf Rot setzen
                Thread.sleep(10000);
                
                 zustand = Zustaende. gelbrot;
            lampeOben.FarbeSetzen ("rot");
            lampeMitte.FarbeSetzen ("gelb");
            lampeUnten.FarbeSetzen ("schwarz");
                
                //Ampel auf Gelbrot setzen
                Thread.sleep(1000);
            }} catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
     public void stoppeAmpel()
     
     {
            zustand = Zustaende. kaputt;
            lampeOben.FarbeSetzen ("schwarz");
            lampeMitte.FarbeSetzen ("schwarz");
            lampeUnten.FarbeSetzen ("schwarz");
            this.interrupt();
        }
 
G

Guest1760

Gast
Hallo, wie müsste denn dazu eine funktion stop heißen, da irgendwie Thread.stop() nicht funktioniert.

LG

Christian
 

eRaaaa

Top Contributor
kurze Anmerkung noch zu dem Code von nrg/Quest1760/Ziegenpeter und der schon angesprochenen stoppeAmpel-Methode: Das wird so höchster Wahrscheinlichkeit nicht wie gewollt funktionieren! Da der Code innerhalb der run-Methode sich fast ausschließlich im "Schlaf" befindet, wird interrupt wahrscheinlich dann auch aufgerufen, wenn sich der Thread in diesem Zustand befindet....lange Rede kurzer Sinn: im catch-Block (catch (InterruptedException e)) müsste wahrscheinlich noch erneut interrupt() aufgerufen werden!
 
Zuletzt bearbeitet:
G

Guest1760

Gast
Also wenn ich da dann void stoppeAmpel klicke dann kommt ein neues fenster, das sagt:

Fehler

Your Program is already running, and stopped at a breakpoint.
You cannot start another execution while the current one is still active.

Use the debugger Controls to either continue or terminate the current execution first.

Erst wenn ich dannach auf Beenden klicke bricht es vollständig ab.

Kann sein, dass eRaaaa dies gerade genannt hat, jedoch werde ich daraus nicht klar. wie müsste es dann heißen dass der fehler nicht mehr kommt?

Lg
Christian
 
S

SlaterB

Gast
die Fehlermeldung klingt, als wenn du das Programm im Debugger ausführst

> jedoch werde ich daraus nicht klar. wie müsste es dann heißen dass der fehler nicht mehr kommt?

->

> im catch-Block (catch (InterruptedException e)) müsste wahrscheinlich noch erneut interrupt() aufgerufen werden!
 
S

SlaterB

Gast
wie rufst du es denn das erste Mal auf (Zeile 52 im Posting von Ziegenpeter), einfach die Codezeile kopieren?
 
G

Guest1760

Gast
Selbe fehler immer noch, wie kann man denn den Debugger ausschalten? bzw einfach ohne debugger ausführen?
 
S

SlaterB

Gast
ja
(aber frag nicht wie, ohne je eine Information gegeben zu haben, wie du dein Programm startest)
 

nrg

Top Contributor
nicht immer auf mir rumhacken :(. bei meinem post waren wir bei "ich möchte den Zustand permanent wechseln" von einem stop war da noch garnicht die Rede :). In Bezug auf Ziegenpeters Post hast du natürlich Recht.

edit: hätte mal F5 drücken sollen. war auf eRa's Post bezogen :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Ampel Programmieren die jede 10 sekunden ihre farbe wechselt Java Basics - Anfänger-Themen 6
P9cman Ampel in Java implementieren Java Basics - Anfänger-Themen 3
D Ampel für Mitarbeiter zum An-/Abwesend zeigen Java Basics - Anfänger-Themen 28
S Ampel Programmieren Java Basics - Anfänger-Themen 5
Y Ampel Java Basics - Anfänger-Themen 11
L Ampel-Simulation Java Basics - Anfänger-Themen 20
T Ampel implementieren Java Basics - Anfänger-Themen 12
M Ampel Symbole Java Basics - Anfänger-Themen 4
B Ampel (mitBlueJ) Java Basics - Anfänger-Themen 6
M Ampel Java Basics - Anfänger-Themen 14
B Erste Schritte handgeschaltete Ampel programieren Java Basics - Anfänger-Themen 8
Z Ampel Java Basics - Anfänger-Themen 19
D Ampel Programmieren Java Basics - Anfänger-Themen 5
I Ampel mit Verzögerung Java Basics - Anfänger-Themen 2
V Grafische Auswertung (Ampel-System) Java Basics - Anfänger-Themen 12
W h2-console - JDBC-URL und Treiber automatisch setzen Java Basics - Anfänger-Themen 2
H Automatisch Folgen? Java Basics - Anfänger-Themen 1
T TextField Breite automatisch gebunden Java Basics - Anfänger-Themen 8
S Personalnummer automatisch generieren Java Basics - Anfänger-Themen 11
P Variablen HttpResponse.getBody() wird automatisch org.json Object und kann nicht zu json.simple Object gecastet werden? Java Basics - Anfänger-Themen 7
J CMD schließt sich automatisch Java Basics - Anfänger-Themen 5
P Arrays "automatisch" erstellen lassen Java Basics - Anfänger-Themen 12
I Klassen Eine ArrayList<Long>, die sich automatisch sortiert Java Basics - Anfänger-Themen 20
B Automatisch Objekte erzeugen mit verschiedenen Namen Java Basics - Anfänger-Themen 4
P Array wird automatisch überschrieben Java Basics - Anfänger-Themen 3
D Ich suche nach einer Möglickeit den Webseiten Inhalt per Java zu analysieren Automatisch Java Basics - Anfänger-Themen 3
F Interface JFrame mit if-Abfrage automatisch schließen lassen? Java Basics - Anfänger-Themen 3
J Leerzeichen im Pfad automatisch erkennen Java Basics - Anfänger-Themen 30
S Dialogfeld nach 5 Sek automatisch öffnen Java Basics - Anfänger-Themen 15
D Einer Variable automatisch Zahlen hinzuaadieren Java Basics - Anfänger-Themen 3
JavaNewbie2.0 Tausende Wörter in Arrays automatisch einfügen Java Basics - Anfänger-Themen 10
D Best Practice Objekt automatisch im Konstruktor füllen? Java Basics - Anfänger-Themen 9
I Automatisch Verzeichnis erstellen bei File erstellen Java Basics - Anfänger-Themen 5
J Sequenz diagram automatisch erstellen / Ablaufdiagramm Java Basics - Anfänger-Themen 0
G Alle Objekte und Variablen automatisch ausgeben Java Basics - Anfänger-Themen 7
A Klassen welche Klassen importiert Eclipse automatisch Java Basics - Anfänger-Themen 2
N Sequenzdiagamm automatisch erstellen Java Basics - Anfänger-Themen 1
S JComboBox automatisch füllen Java Basics - Anfänger-Themen 3
B Erst lesen: Automatisch Texteingabe bestätigen Java Basics - Anfänger-Themen 6
K Methoden Automatisch nach unten scrollen Java Basics - Anfänger-Themen 2
W Variablen Automatisch static? Java Basics - Anfänger-Themen 3
M Automatisch hoch zählen Java Basics - Anfänger-Themen 8
A Bildgröße automatisch auf JLabel Größe konvertieren Java Basics - Anfänger-Themen 9
R eine Methode automatisch wiederholen Java Basics - Anfänger-Themen 12
H Regulären Ausdruck automatisch erstellen Java Basics - Anfänger-Themen 5
Viktormk java - int wert automatisch einlesen Java Basics - Anfänger-Themen 8
S Methode automatisch invoked Java Basics - Anfänger-Themen 4
E JTextArea beim Schreiben automatisch vergrößern Java Basics - Anfänger-Themen 7
S OOP Objekte automatisch erzeugen Java Basics - Anfänger-Themen 13
S Mehrere Objekte einer Klasse automatisch erzeugen Java Basics - Anfänger-Themen 15
D Automatisch zweidimensionale Arrays durchiterieren Java Basics - Anfänger-Themen 2
D Letztes Änderungs-Datum als Version automatisch eintragen Java Basics - Anfänger-Themen 5
A Downcast automatisch? Java Basics - Anfänger-Themen 17
T methode mehrfach automatisch ausfuehren Java Basics - Anfänger-Themen 6
M Vererbung Objekt automatisch einem Set zuordnen... Java Basics - Anfänger-Themen 7
A Input/Output Datei automatisch erstellen. Java Basics - Anfänger-Themen 29
T Varibalen automatisch in Schleife erstellen oder anderen Lösungsvorschlag Java Basics - Anfänger-Themen 18
ruutaiokwu properties values automatisch escapen ??? Java Basics - Anfänger-Themen 3
J eclipse kommentar nicht automatisch löschen Java Basics - Anfänger-Themen 3
T Datenbank automatisch erzeugen beim ersten Start Java Basics - Anfänger-Themen 6
M JFrame automatisch ausrichten Java Basics - Anfänger-Themen 3
G Variablen automatisch erstellen.. Java Basics - Anfänger-Themen 4
J Dateien automatisch per Mail versenden Java Basics - Anfänger-Themen 3
E Mehrdimensionales Array automatisch befüllen Java Basics - Anfänger-Themen 9
P OOP Automatisch neue Objekte erstellen Java Basics - Anfänger-Themen 14
S Eingabe über Scanner einlesen und automatisch beenden Java Basics - Anfänger-Themen 11
M Datei automatisch erstellen Java Basics - Anfänger-Themen 5
H zustände speichern und beim erneuten programmstart zustände automatisch laden Java Basics - Anfänger-Themen 26
F JAVA_HOME automatisch setzen? Java Basics - Anfänger-Themen 2
X Programm beim Systemstart automatisch ausführen Java Basics - Anfänger-Themen 2
M String und Int Werte automatisch erstellen Java Basics - Anfänger-Themen 5
S UML mit Eclipse automatisch erstellen Java Basics - Anfänger-Themen 5
M Threads automatisch erzeugen Java Basics - Anfänger-Themen 10
X Errechte Werte automatisch in einem Array speichern Java Basics - Anfänger-Themen 11
T Variablennamen automatisch erstellen Java Basics - Anfänger-Themen 6
G Sonderzeichen automatisch ändern lassen Java Basics - Anfänger-Themen 23
J ImageIcon im JLabel automatisch resizen. Java Basics - Anfänger-Themen 6
J Automatisch Button drücken/Event ausführen? Java Basics - Anfänger-Themen 6
N Programm automatisch schließen Java Basics - Anfänger-Themen 3
M Swing Anwendung - boolean schaltet automatisch auf true Java Basics - Anfänger-Themen 2
L Lokale Variablen automatisch durch Schleife erzeugen Java Basics - Anfänger-Themen 2
L Sonderzeichen automatisch escapen. Java Basics - Anfänger-Themen 7
G JSP-Seite automatisch schließen Java Basics - Anfänger-Themen 4
G Eclipse startet automatisch Fenster. Java Basics - Anfänger-Themen 4
S Attribut beim erzuegen eines Objektes automatisch erhöhen Java Basics - Anfänger-Themen 6
G jtable, zeile automatisch hinzufügen Java Basics - Anfänger-Themen 3
E ScrollBar automatisch scrollen Java Basics - Anfänger-Themen 8
M Spaltengrößen automatisch anpassen mit POI Bibliothek ? Java Basics - Anfänger-Themen 4
M for-Schleife und Variablen automatisch durchlaufen Java Basics - Anfänger-Themen 2
P Automatisch auf die nächst höere zahl runden? Java Basics - Anfänger-Themen 7
J Leere Textfields automatisch mit einem Wert ausfüllen Java Basics - Anfänger-Themen 3
D Editor automatisch starten ? Java Basics - Anfänger-Themen 4
G Dem array automatisch werte von -10 bis +10 zuweisen Java Basics - Anfänger-Themen 6
G automatisch ausrechnen Java Basics - Anfänger-Themen 3
G automatisch speichern beim schliessen eines Spiels Java Basics - Anfänger-Themen 13
X Komponenten automatisch erzeugen Java Basics - Anfänger-Themen 8
X Viele Komponenten automatisch erzeugen Java Basics - Anfänger-Themen 2
A Punkte automatisch verbinden? Java Basics - Anfänger-Themen 3
K Object automatisch initialisiert? Java Basics - Anfänger-Themen 7
P Wie für EIN Java Programm von 64bit Java (=Standard) auf 32bit Java Installation (Windows) umschalten? Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben