Ampel

yan18

Mitglied
Hallo, kann mir jemand bei einer Aufgabe weiterhelfen?
Und zwar möchte ich ein Modell einer Ampel programmieren. Die Ampel hat ein grünes und ein rotes Licht. Das habe ich auch alles schon soweit. Jetzt brauche ich noch eine Methode, die die Ampel wenn sie rot ist auf grün schaltet und umgekehrt.
Wäre nett, wenn mir vielleicht jemand weiterhelfen könnte.
 

mihe7

Top Contributor
Zeig mal Deinen Code (bitte zwischen Code-Tags in den Editor kopieren, also so: [code=Java]Dein Code[/code]) und sag uns, wo Du ein Problem hast.
 

yan18

Mitglied
Das wäre meine Methode um die Ampel von rot auf grün umzuschalten und umgekehrt.
Bin mir aber nicht so sicher, ob sie so funktionieren würde.

Java:
    [B]public[/B] [B]void[/B] umschalten() {

        [B]if[/B] (greenLight) {

            greenLight = [B]false[/B];

            redLight = [B]true[/B];

        } [B]else[/B] [B]if[/B] (redLight) {

            greenLight = [B]true[/B];

            redLight = [B]false[/B];

        }

    }

}
 
K

kneitzel

Gast
Das sieht doch schon sehr gut aus. Setzt nur eben voraus, dass der Status korrekt ist, also genau eines der beiden muss wahr sein.

Da man nur zwei Stati hat, die man unterscheiden will, reicht auch ein if / else. Ein zweites if ist da dann eigentlich nicht mehr notwendig.
 

yan18

Mitglied
Danke euch. Wie könnte ich jetzt in einer anderen Klasse diese Methode verwenden?
Es geht darum, dass ich jetzt in einer class Light eine Methode einbauen will, die sozusagen den Lichtschalter drückt und die Methode zum umschalten ausführt.
 

mihe7

Top Contributor
Du kannst eine Instanz Deiner Ampel mit new erzeugen und diese kannst Du an andere Objekte rumreichen.

Beispiel:
Java:
public class Switch {
    private TrafficLights lights; // eine Ampel

    public Switch(TrafficLights lights) { // Konstruktor, verbindet den Schalter mit der Ampel
        this.lights = lights; 
    }

    public void push() {
        lights.toggle(); // umschalten
    }
}

Damit kannst Du jetzt in einer Hauptklasse folgendes machen:
Java:
public static void main(String[] args) {
    TrafficLights lights = new TrafficLights(); // neue Ampel erstellen
    Switch lightSwitch = new Switch(lights); // neuen Schalter erstellen und mit Ampel verbinden
    lightSwitch.push(); // Schalter drücken
}
 

yan18

Mitglied
Habe jetzt zwei Klassen. Einmal eine Klasse class Light und eine Klasse class TrafficLight.
In der Klasse class Light habe ich

Java:
    [B]private[/B] TrafficLight light;

    

    [B]public[/B] Light(TrafficLight light) {

        [B]this[/B].light = light;

    }

    

    [B]public[/B] [B]void[/B] push() {

        light.push();

    }

    

    [B]public[/B] [B]static[/B] [B]void[/B] main(String[] args) {

        TrafficLight light = [B]new[/B] TrafficLight();

        Light lightLight = [B]new[/B] Light(light);

        lightLight.push();

    }

}

und in der Klasse TrafficLight habe ich dann

Java:
    }

    [B]public[/B] [B]void[/B] push() {

        

        

    }
 

mihe7

Top Contributor
Kannst Du beim Einfügen bitte Strg+Shift+V verwenden (bzw. ohne Formatierung einfügen)?

Was ist denn Light und was ist TrafficLight?
 

yan18

Mitglied
ok, sorry wusste nicht wie das mit dem einfügen anders funktioniert.

Habe jetzt soweit alles. Habe nur noch das Problem, dass ich keine Kontrollstrukturen verwenden darf, also die if else Anweisung nicht geht. Überlege gerade was ich da an Alternativen verwenden könnte.
 

mihe7

Top Contributor
Wenn Du nur zwei mögliche Zustände hast, die sich einander ausschließen, könntest Du überlegen, einfach eine boole'sche Variable (z. B. red) zu verwenden. Dann kannst Du Dir überlegen, was das "Gegenteil" einer boole'schen Variable ist...
 

Ähnliche Java Themen

Neue Themen


Oben