Zustand (string) eines Objekts mit Methode ausgeben.

H?Ampelmann

Grünschnabel
Hallöle,

ich habe eine sinnlose Ampel programmiert (Klassen: Circle und Ampel)
Die Farbe wird durch einen String festgelegt (private String Color).
Ich möchte in Circle eine Methode haben die den derzeitigen Zustand/Namen ("red", "green", "yellow") des Strings ausgibt um in Ampel die Methode "wechseln" verwirklichen zu können.

Ich weiß zwar wie ich, das verwirkliche wenn ich Color public mache, das will ich aber nicht....

Danke für Eure Hilfe
 
Hi,

Danke!
Aber jetzt stimmt was nicht in der Klasse Ampel :( :
Code:
public void wechseln()
    {
        if (kreis_rot.getColor="red") 
        { 
            kreis_rot.changeColor("black");
            kreis_rot.makeVisible();
            kreis_gruen.changeColor("green");
            kreis_gruen.makeVisible(); 
        }
        else
        {
            kreis_rot.changeColor("red");
            kreis_rot.makeVisible();
            kreis_gruen.changeColor("black");
            kreis_gruen.makeVisible();
        }
    }
 
Hi,
Du hast 2 fatale Fehler gemacht.
1. Klammern hinter Methodenaufruf vergessen
2. String falsch verglichen
a) das Vergleichszeichen in Java ist "==", nicht "=".
b) Objecte(also auch Strings) müssen mit equals() verglichen
werden(Beschreibung unten)
Hier die verbesserte Version:
Java:
public void wechseln()
    {
        if (kreis_rot.getColor().equals("red")) 
        { 
            kreis_rot.changeColor("black");
            kreis_rot.makeVisible();
            kreis_gruen.changeColor("green");
            kreis_gruen.makeVisible(); 
        }
        else
        {
            kreis_rot.changeColor("red");
            kreis_rot.makeVisible();
            kreis_gruen.changeColor("black");
            kreis_gruen.makeVisible();
        }
    }
equals() liefert "true", wenn zwei Objekte den gleichen Inhalt haben.
== liefert "true", wenn zwei Referenzen auf dasselbe Object verweisen
Letzteres benutzt man eigentlich nur bei primitiven Datentypen wie int & co

Ich hoffe ich konnte dir helfen.
Ciao
DosCoder
 
Zuletzt bearbeitet:
Zurück