Fußgängerampel

'Franzii.<3'

Mitglied
ich finde den Fehler nicht.
die Fehlermeldung lautet:
"illegal start of expression"
danke schon mal im voraus für hilfe!! :)
Java:
import java.awt.event.*;
import javax.swing.*;

public class Ampel 
{

    /** Attribute */
    private Lampe        Licht1, Licht2, Licht3, Licht4, Licht5;
    private enum           Zustand{gruen, gelb, rot, rotgelb, aus, st, ge}; 
    private Zustand        z;
    private JButton        schalter;
    private Timer          taktgeber;
    private boolean        weitermachen;
    private Zeichenfenster fenster;
    private Stehmaennchen stehmaennchen;
    private Gehmaennchen gehmaennchen;
    
    /** Konstruktor fuer Objekte der Klasse Ampel */
    public Ampel()
    {
        fenster = new Zeichenfenster("Ampel", 500, 600);
        Licht1   = new Lampe(20, 20,150,fenster);
        Licht2  = new Lampe(20,170,150,fenster);
        Licht3 = new Lampe(20,320,150,fenster);
        Licht4 = new Lampe(300, 20, 150, fenster);
        Licht5 = new Lampe(300, 170, 150, fenster);
        
        
        schalter = new JButton ( " EIN ");
        fenster.komponenteHinzufuegen(schalter, "unten");
        schalter.addActionListener ( new ActionListener()
        {
            public void actionPerformed (ActionEvent e)
            {
                ein();
            }
        });
        
        taktgeber = new Timer(1000, new ActionListener()
        {
            public void actionPerformed (ActionEvent e)
            {
                weiter1();
            }
        });
        
        Stehmaennchen st;
            st = new Stehmaennchen(10, 10, fenster);
            st.Kopf();
            st.Oberkoerper();
            st.Beine();
            st.Arme();
            st.Schultern();
            st.Haende();
            st.Schuhe();

         Gehmaennchen ge;
            ge = new Gehmaennchen(10, 10, fenster);
            ge.Kopf();
            ge.Arm1();
            ge.Arm2();
            ge.Bein1();
            ge.Bein2();
            ge.Oberkoerper();
            ge.Fuß();
            ge.Schultern();
            
        
    }

    /** weitere Methoden */
    public void ein()
    {
        if (z== Zustand.aus)
        { 
            setzeRot1();
            setzeGehmaennchen();
            taktgeber.start ();
            weitermachen = true;       
        }
        if (z== Zustand.rotgelb || z ==Zustand.gruen)
        {
            weitermachen = true;
        }
    
    
    public void weiter1()
    switch (z)
        {
            case gruen:  
                        if (weitermachen) 
                          {
                              taktgeber.setDelay(5000); setzeGelb1(); break;
                          }
                          else 
                          {
                              aus1(); break;
                          }
            case gelb:    taktgeber.setDelay(1000); setzeRot1(); break;
            case rot:     taktgeber.setDelay(1000); setzeRotGelb1(); setzeStehmaennchen();break;
            case rotgelb: taktgeber.setDelay(1000); setzeGruen1(); setzeStehmaennchen();
        }
    
    
    public void aus1()
    {
        setzeAus1();
        taktgeber.stop ();
    }

    public void setzeRot1()
    {
        Licht1.faerbeUm(4);
        Licht2.faerbeUm(0);
        Licht3.faerbeUm(0);
        z = Zustand.rot;
        weitermachen = false;
        Stehmaennchen.faerbeUm(0);
        Gehmaennchen.faerbeUm(2);
    }
   
    public void setzeGruen1()
    {
        Licht1.faerbeUm(0);
        Licht2.faerbeUm(0);
        Licht3.faerbeUm(2);
        z = Zustand.gruen;
        Stehmaennchen.faerbeUm(4);
        Gehmaennchen.faerbeUm(0);
        
    }
   
    public void setzeGelb1()
    {
        Licht1.faerbeUm(0);
        Licht2.faerbeUm(9);
        Licht3.faerbeUm(0);
        z = Zustand.gelb;
        Stehmaennchen.faerbeUm(4);
        Gehmaennchen.faerbeUm(0);
    }
   
    public void setzeRotGelb1()
    {
        Licht1.faerbeUm(4);
        Licht2.faerbeUm(9);
        Licht3.faerbeUm(0);
        z = Zustand.rotgelb;
        Stehmaennchen.faerbeUm(4);
        Gehmaennchen.faerbeUm(0);
    }
   
    public void setzeAus1()
    {
        Licht1.faerbeUm(0);
        Licht2.faerbeUm(0);
        Licht3.faerbeUm(0);
        stehmaennchen.faerbeUm(0);
        gehmaennchen.faerbeUm(0);
        z = Zustand.aus;
    }
    public void setzeGehmaennchen()
    {
        gehmaennchen.faerbeUm(2);
        stehmaennchen.faerbeUm(0); 
        z = Zustand.gehmaennchen;
    }
    
    public void setzeStehmaennchen()
    {
        stehmaennchen.faerbeUm(4);
        gehmaennchen.faerbeUm(0); 
        z = Zustand.stehmaennchen;
    }
  
}
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
wie stellst du dir die Hilfe praktisch vor,
dass jemand alle 176 Zeilen durchschaut nach falschen Klammern oder ähnlichen möglichen Tippfehlern?
Kopieren und selber Kompilieren fällt ja aus mit Unmengen unbekannter Klassen

hast du nicht zumindest eine Zeilennummer des Fehlers?


edit nach unten:
klappt ja doch mit direkter Korrektur ;)
 
Zuletzt bearbeitet von einem Moderator:

Final_Striker

Top Contributor
Java:
   public void ein()
    {
        if (z== Zustand.aus)
        { 
            setzeRot1();
            setzeGehmaennchen();
            taktgeber.start ();
            weitermachen = true;       
        }
        if (z== Zustand.rotgelb || z ==Zustand.gruen)
        {
            weitermachen = true;
        }
    } // schließende Klammer fällt
    
    public void weiter1()
{ // öffnende Klammer fällt 
    switch (z)
        {
        ...
        }
} // schließende Klammer fällt    
    
    public void aus1()
    {
        setzeAus1();
        taktgeber.stop ();
    }
 

'Franzii.<3'

Mitglied
jetzt zeigt es mir bei jeder zeile mit geh- bzw. stehmaennchen.faerbeUm(0); (oder ähnlich) an:
java.lang.NullPointerException
wie kann ich diesen fehler beheben, bzw. warum tritt dieser auf.
danke schon mal für eure hilfe.
hier noch ein beispiel wo der fehler auftritt.
Java:
 public void setzeAus1()
    {
        Licht1.faerbeUm(0);
        Licht2.faerbeUm(0);
        Licht3.faerbeUm(0);
        stehmaennchen.faerbeUm(0);
        gehmaennchen.faerbeUm(0);
        z = Zustand.aus;
    }
 

r.w.

Bekanntes Mitglied
jetzt zeigt es mir bei jeder zeile mit geh- bzw. stehmaennchen.faerbeUm(0); (oder ähnlich) an:
java.lang.NullPointerException
wie kann ich diesen fehler beheben, bzw. warum tritt dieser auf.
danke schon mal für eure hilfe.
hier noch ein beispiel wo der fehler auftritt.
Java:
 public void setzeAus1()
    {
        Licht1.faerbeUm(0);
        Licht2.faerbeUm(0);
        Licht3.faerbeUm(0);
        stehmaennchen.faerbeUm(0);
        gehmaennchen.faerbeUm(0);
        z = Zustand.aus;
    }

Wenn Du in Deinem ersten QuellCode die Zeile 47 und 57 auskommentierst,
müsste das behoben sein.

VG ROlf
 

'Franzii.<3'

Mitglied
ich sollte natürlich die ampel dann auch zum laufen bringen, aber das funktioniert überhaupt nicht mehr.
ich habe noch die klassen: zeichenfenster, farbkreis, kasten, Lampe, stehmaennchen, und gehmaennchen und natürlich ampel.
aber ich glaube dass der ablauf usw. einfach auch nicht stimmt, mit dem if und dem switch. :noe:
 

r.w.

Bekanntes Mitglied
danke jetzt ist dieses problem weg aber jetzt kennt er ja das st nicht mehr :(

Du hast in Zeile 15 und 16 die Variablen so deklariert:

[Java=15]
private Stehmaennchen stehmaennchen;
private Gehmaennchen gehmaennchen;
[/Java]

Mit diesen Bezeichnern musst Du natürlich auch weiter arbeiten.
Also alle "st" durch "stehmaennchen" und alle "ge" duch "gehmaennchen" ersetzen.

Dem entsprechendes gilt auch für alle:
Java:
   Stehmaennchen.faerbeUm(4);
   Gehmaennchen.faerbeUm(0);
(Wobei ".faerbeUm(0);" hier nur beispielhaft ist.)

Hier musst Du jeweils "Stehmaennchen." und "Gehmaennchen."
durch "stehmaennchen." und "gehmaennchen." ersetzen. Ich gehe
dabei mal davon aus, dass die dort aufgerufenen Methoden nicht
static sind.

VG ROlf
 

Neue Themen


Oben