BlueJ: was genau ist hier der Fehler?

heheeee

Mitglied
ich weiß nicht was ich ändern muss damit das richtig ist... ich bin eigentlich nicht so erfahren mit sowas, wir lernen grad in der Schule das Programmieren, vorerst mit BlueJ später dann auch mit Java, aber ich schreibe morgen eine Arbeit darüber und finde den Fehler nicht ;( es geht um die Bedingung if (oder so) und ich sollte eine Ampel programmieren die ihre Farbe ändert, klappt aber leider irgendwie nicht, das rot gefärbte ist rot unterringelt und dabei steht dann immer "incomparable types: RECHTECK and java.lang.String"

hier die Methode in der der Fehler liegt:

void orangeAmpelKasten()
{ if (ampelKasten=="schwarz")

{ ampelKasten.FarbeSetzen("rot");
}
else

{ ampelKasten.FarbeSetzen("gelb");

}
}
 

BodyLAB

Bekanntes Mitglied
incomparable types: RECHTECK and java.lang.String
Die Warnung bezieht sich sicherlich auf
ampelKasten=="schwarz"
Du benötigst einen Getter der dir die Farbe des RECHTECK in Stringform zurück gibt. So versuchst du ein Objekt vom Typ Rechteck mit einem Objekt vom Typ String zu vergleichen. So etwas geht nicht, das ist ähnlich wie Äpfel mit Birnen zu vergleichen.

Java:
class RECHTECK {
 String farbe;
   
    String getFarbe() { return farbe; }

}

Deinen Code solltest du in [CODE ] Kästchen Packen hier :) Ist besser zu lesen
 

heheeee

Mitglied
Die Warnung bezieht sich sicherlich auf

Du benötigst einen Getter der dir die Farbe des RECHTECK in Stringform zurück gibt. So versuchst du ein Objekt vom Typ Rechteck mit einem Objekt vom Typ String zu vergleichen. So etwas geht nicht, das ist ähnlich wie Äpfel mit Birnen zu vergleichen.

Java:
class RECHTECK {
 String farbe;
 
    String getFarbe() { return farbe; }

}

Deinen Code solltest du in [CODE ] Kästchen Packen hier :) Ist besser zu lesen
ich habe zwar nicht ganz verstanden wie du das gemeint hast, also wie gesagt ich habe keine Ahnung von sowas, ich denke das ist weil wir das mit diesem "Getter" noch nicht hatten, aber du hast mir einen Gedankenanstoß gegeben :))
Du benötigst einen Getter der dir die Farbe des RECHTECK in Stringform zurück gibt. So versuchst du ein Objekt vom Typ Rechteck mit einem Objekt vom Typ String zu vergleichen. So etwas geht nicht, das ist ähnlich wie Äpfel mit Birnen zu vergleichen.
also vor allem das hier hat mir sehr geholfen, so bin ich dann irgendwie durch rumprobieren wieder auf das hier gekommen, und die Methode ist auch endlich richtig und meine Ampel funktioniert wieder xD

void orangeAmpelKasten(String ampelKastenFarbe)
{

if (ampelKastenFarbe=="schwarz")

{ ampelKasten.FarbeSetzen("rot");
}
else

{ ampelKasten.FarbeSetzen("gelb");

}
}
 

Oneixee5

Top Contributor
ampelKasten.FarbeSetzen("rot")
Diese Schreibweise ist sehr ungünstig. Der Compiler mag das akzeptieren aber die Welt hat sich auf Konventionen geeinigt, wie man so etwas schreibt. Der Grund ist ganz einfach, jeder soll Quellcode leicht verstehen können. Auch wenn dieser Wörter außerhalb der eigenen Muttersprache enthält. Informiere dich bitte über Java-Code-Konventionen, z.B. hier: https://google.github.io/styleguide/javaguide.html.
Normalerweise würde die Methode so heißen: ampelKasten.setFarbe("rot"); und das Gegenteil: String farbe = ampelKasten.getFarbe();
 

heheeee

Mitglied
Diese Schreibweise ist sehr ungünstig. Der Compiler mag das akzeptieren aber die Welt hat sich auf Konventionen geeinigt, wie man so etwas schreibt. Der Grund ist ganz einfach, jeder soll Quellcode leicht verstehen können. Auch wenn dieser Wörter außerhalb der eigenen Muttersprache enthält. Informiere dich bitte über Java-Code-Konventionen, z.B. hier: https://google.github.io/styleguide/javaguide.html.
Normalerweise würde die Methode so heißen: ampelKasten.setFarbe("rot"); und das Gegenteil: String farbe = ampelKasten.getFarbe();
das mag sein, aber ich würde das gerne erst mal nur so machen wie unser Lehrer das sagt... ich lerne das hauptsächlich nur in der Schule (und auch nur dafür, ich habe nicht vor Informatikerin oder sowas in die Richtung zu werden..xD), und das was du da genannt hast haben wir noch nicht gehabt
 

Jw456

Top Contributor
Teste doch mal deinen Code. Du wirst egal welche Farbe du an die Methode übergibst gelb setzen. Weil dein Vergleich mit == nie true sein wird.

PS mit == kannst du Zahlen zb "int" vergleichen aber nicht Strings

Und seit wann gibt es bei einer Ampel schwarz? Dann wäre die aus.
 
Zuletzt bearbeitet:

BodyLAB

Bekanntes Mitglied
PS mit == kannst du Zahlen zb "int" vergleichen aber nicht Strings
In Java Strings, the == operator is used to check the reference of both the string objects and equals() method used to check the value equality of both strings.

Der == Operator ist nur für Primitive Datentype korrekt. Bei Objekten wie z. B. String funktioniert dieser in Java so nicht. Er vergleicht ledeglich die Speicheradresse. Diese ist bei zwei unterschiedlichen Objekten nie die selbe.
Deswegen muss man noch die equals-Methode aus Object überschreiben um Objekte vergleichen zu können.

Lernt ihr Java oder JavaScript?
 

heheeee

Mitglied
Teste doch mal deinen Code. Du wirst egal welche Farbe du an die Methode übergibst gelb setzen. Weil dein Vergleich mit == nie true sein wird.

PS mit == kannst du Zahlen zb "int" vergleichen aber nicht Strings

Und seit wann gibt es bei einer Ampel schwarz? Dann wäre die aus.
habe ich.. wenn ich da schwarz eingebe bekomme ich eine rote Ampel (bzw Ampelkasten), jede andere Farbe ergibt eine gelbe Ampel (Ampelkasten)... also wie gesagt verurteilt mich bitte nicht, 1. ich habe keine Ahnung von sowas heißt ich kann auch nicht erklären wieso das hier in dem Beispiel so ist aber die Methode funktioniert so wie ich sie gelöst habe, und 2. die Farben sind doch wurscht, ich habe Ampel so verallgemeinert gesagt, ich meinte eigentlich den Ampelkasten, ich wollte den ursprünglich auch orange machen deswegen steht das oben im Kopf auch noch so, ich wollte eigentlich nur dass die Methode endlich läuft weil ich da seit gestern ohne Erfolg herumprobiert habe und das wichtig ist für meine Arbeit morgen. So wie ich das da gemacht habe, so haben wir das bis jetzt auch nur gelernt (wir machen das erst seit ca. 1 monat)
und danke für den Hinweis :))
 

heheeee

Mitglied
Der == Operator ist nur für Primitive Datentype korrekt. Bei Objekten wie z. B. String funktioniert dieser in Java so nicht. Er vergleicht ledeglich die Speicheradresse. Diese ist bei zwei unterschiedlichen Objekten nie die selbe.
Deswegen muss man noch die equals-Methode aus Object überschreiben um Objekte vergleichen zu können.

Lernt ihr Java oder JavaScript?
ich weiß es nicht, wir üben vorerst mit BlueJ und später werden wir auf Java umsteigen, wurde uns so zumindest gesagt. Ich weiß nicht ob das dann Java oder JavaScript sein wird. Ich dachte mir aber ich frage trotzdem hier weil BlueJ ähnlich wie Java sein soll
 

KonradN

Super-Moderator
Mitarbeiter
Nur zur Ergänzung. Da == die Referenzen vergleicht, funktioniert diese bei gewissen Gegebenheiten sehr wohl!
Bei Strings ist diese Nutzung ok, so lange nur Literalte (die dann auch in Variablen gespeichert wurden) verglichen werden. Der Vergleich mit z.B. "rot" ist also ok, wenn in der Variable auch immer nur so ein Literal genutzt wurde. (Hintergrund ist, dass hier immer auf einen und den gleichen String verwiesen wird! String.intern() wäre da die Methode, dessen Dokumentation man sich anschauen sollte.)
Die zweite Stelle sind Enums bzw. Konstanten. Wenn hier immer die gleiche Konstante zugewiesen wurde und nie eine neu erstellte Instanz (Sprich so, wie es bei Enums erzwungen wird), dann wäre es auch in Ordnung.

Da dies aber potenziell Fehleranfällig ist, sollte man es nicht machen und der Hinweis, dass man bitte equals nutzen soll, ist sehr sinnvoll.

verurteilt mich bitte nicht
Es geht hier um keine Verurteilung. Wenn dann sind wir unzufrieden mit dem, was ihr wie lernt. Wir wollen Dir hier nur helfen.

wir üben vorerst mit BlueJ und später werden wir auf Java umsteigen,
Also BlueJ ist eine Entwicklungsumgebung und da schreibt Ihr schon Java Programme. Es gibt nur gewisse Unterschiede, denn bei BlueJ habt ihr nicht die Klassischen Java Programme bei denen immer eine main Methode gestartet wird. Statt dessen wird der Java Code einfach übersetzt und BlueJ startet dann eine Methode, die ihr eben starten wollt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Arjunreddy Can someone please tell me how to use a debugger in BlueJ(a Java environment) Java Basics - Anfänger-Themen 1
N Interpreter-Fehler Compiler zeigt keine Fehler an, aber das Programm läuft nicht (BlueJ) Java Basics - Anfänger-Themen 2
W Pfeilenformen im BlueJ Java Basics - Anfänger-Themen 9
I BlueJ Queue Frage für Klausur Java Basics - Anfänger-Themen 2
aero043 Hilfe bei BlueJ Hausübung Java Basics - Anfänger-Themen 27
M BlueJ Objekt in Objektliste Java Basics - Anfänger-Themen 2
K Spieleidee gesucht für Informatikprojekt - JAVA (BlueJ)? Java Basics - Anfänger-Themen 15
Vernon.098 Java (BlueJ) Mensch ärgere dich nicht Programmien Java Basics - Anfänger-Themen 6
momo96 bluej Java Basics - Anfänger-Themen 2
K BlueJ Ball an Rand Reflektieren Java Basics - Anfänger-Themen 2
YAZZ BlueJ Bewegung einer Figur im Kreis Java Basics - Anfänger-Themen 4
Delonyg Bluej Supermarkt Java Basics - Anfänger-Themen 2
Ray19941 Über BlueJ Textdatei selbstständig erstellen lassen Java Basics - Anfänger-Themen 2
N BlueJ Implementation Analoguhr Java Basics - Anfänger-Themen 33
N Selection Algorithmus: Methode wird nicht erkannt (BlueJ) Java Basics - Anfänger-Themen 3
C Projekt öffnen BlueJ Java Basics - Anfänger-Themen 1
M BlueJ - Array als Paramter einer Methode eingeben Java Basics - Anfänger-Themen 12
K Testen in BlueJ Java Basics - Anfänger-Themen 2
C BlueJ Zahlenschloss programmieren Java Basics - Anfänger-Themen 5
1 BlueJ Fehler ? Java Basics - Anfänger-Themen 7
L Bluej Error: Cannot find Symbol Java Basics - Anfänger-Themen 13
H Methoden Bluej Anfänger Java Basics - Anfänger-Themen 13
D BlueJ Java: Strings voneinander trennen Java Basics - Anfänger-Themen 11
V ToString-Methode mit JUnit testen(BlueJ) Java Basics - Anfänger-Themen 10
G Variablen Variable nimmt keinen Wert an (BlueJ) Java Basics - Anfänger-Themen 4
I BlueJ importdatei fehlt Java Basics - Anfänger-Themen 4
D Java BlueJ Programm wiederholen? Java Basics - Anfänger-Themen 6
J Uniprojekt (BlueJ) Java Basics - Anfänger-Themen 17
H Klassen Hilfe bei BlueJ, Supermario Java Basics - Anfänger-Themen 5
W Testmethoden in BlueJ Java Basics - Anfänger-Themen 12
F Java BlueJ Dinge verschwinden lassen Java Basics - Anfänger-Themen 2
X wie kann ich in bluej/java einene 2d array mit zahlen fuellen, so dass sich diese in der der zeilen Java Basics - Anfänger-Themen 2
E Hilfe bei Lambda-Ausdrücken in BlueJ Java Basics - Anfänger-Themen 1
J BlueJ und import-Anweisungen, wie geht das? Java Basics - Anfänger-Themen 4
K BlueJ Terminverwaltung erstellen Java Basics - Anfänger-Themen 1
J BlueJ - kompilieren - und wie weit kommt man mit BlueJ? Java Basics - Anfänger-Themen 4
J Thread erstellen (BlueJ Projekt) Java Basics - Anfänger-Themen 3
I Erste Schritte BlueJ Fehler Java Basics - Anfänger-Themen 8
C Manuelle Parametereingabe in BlueJ Java Basics - Anfänger-Themen 5
D Wer wird Millionär ? BlueJ Java Java Basics - Anfänger-Themen 2
P BlueJ Sieb des Eratothenes Java Basics - Anfänger-Themen 4
M Ausgeben eines 2D Arrays mit int UND String werten - BLUEJ! Java Basics - Anfänger-Themen 4
G BlueJ Stacks Bahnhof Java Basics - Anfänger-Themen 2
J BlueJ öffnet package falsch Java Basics - Anfänger-Themen 2
J BlueJ Liste Würfel Projekt Java Basics - Anfänger-Themen 2
P Java mit BlueJ - Hilfe - Gegenstände Java Basics - Anfänger-Themen 10
H BlueJ Java Basics - Anfänger-Themen 3
L Queue programmieren via BlueJ Java Basics - Anfänger-Themen 5
R Nach Ubuntu-Update: Konsole spuckt bei neu Kompilierten Programmen Fehler aus (BlueJ)(Ubuntu12.04) Java Basics - Anfänger-Themen 11
X Erste Schritte Java BlueJ Programmieren Java Basics - Anfänger-Themen 36
Tally Methoden BlueJ - Datum als Kalendertag int - tagImJahr Java Basics - Anfänger-Themen 6
J BlueJ canvas Buttons adden? Java Basics - Anfänger-Themen 2
J BlueJ Tic Tac Toe öffnen? Java Basics - Anfänger-Themen 6
T Erste Schritte BlueJ kapitel 4 frage Schleifen ? Java Basics - Anfänger-Themen 4
V BlueJ: Funktionierende .jar Datei erstellen Java Basics - Anfänger-Themen 2
G Methoden BlueJ SuM Methode wird nicht gefunden Java Basics - Anfänger-Themen 9
S Pakete in BlueJ Java Basics - Anfänger-Themen 5
T Snake-BlueJ Bewegung Java Basics - Anfänger-Themen 7
S Erste Schritte Bluej Automatisches Einfügen von Objekten Java Basics - Anfänger-Themen 4
T Snake mit Bluej Java Basics - Anfänger-Themen 8
R BlueJ - Hilfe bei for-Struktur Java Basics - Anfänger-Themen 11
S Erste Schritte BlueJ-Aufgabe: Programmcode / Brauche dringend Hilfe !!! Java Basics - Anfänger-Themen 37
B Verständnisfrage:Beispielprogramm BlueJ Java Basics - Anfänger-Themen 3
P Java BlueJ Schatzsuche Java Basics - Anfänger-Themen 2
H Erste Schritte von BlueJ zu Eclipse Java Basics - Anfänger-Themen 10
I Rc4 Verschlüsselung in BlueJ Java Basics - Anfänger-Themen 18
H Buch: Java lernen mit BlueJ Modulo-Operator Java Basics - Anfänger-Themen 16
X Methoden Java Dublikatsuche Hilfe(BlueJ) Java Basics - Anfänger-Themen 9
X Interpreter-Fehler "java.lang.NullPionterException: null" bei BlueJ Java Basics - Anfänger-Themen 10
C Problem bei BlueJ - Pfeil bleibt nicht in der Dartscheibe stecken Java Basics - Anfänger-Themen 4
M mit BlueJ einen Ticketautomaten programmieren Java Basics - Anfänger-Themen 9
Binary.Coder Bluej ähnlicher Inspektor gesucht Java Basics - Anfänger-Themen 3
T problem mit der maus in BlueJ Java Basics - Anfänger-Themen 14
J BlueJ! 2 kleine Fragen zum Spiel. Java Basics - Anfänger-Themen 3
R BlueJ Pacman Java Basics - Anfänger-Themen 17
B BlueJ Turtle nicht gefunden Java Basics - Anfänger-Themen 6
J start(); bei bluej Java Basics - Anfänger-Themen 3
E BlueJ Projekt öffnen Java Basics - Anfänger-Themen 15
Jats Probleme mit BlueJ und Bankkonto-Methoden Java Basics - Anfänger-Themen 7
A BlueJ BMI berechnen Java Basics - Anfänger-Themen 9
D BlueJ Anzeigeproblem Java Basics - Anfänger-Themen 5
L String Variable zurückgeben mit BlueJ Java Basics - Anfänger-Themen 12
J BlueJ Zeichen, Dart-Pfeil Java Basics - Anfänger-Themen 59
B Paket in BlueJ einfügen Java Basics - Anfänger-Themen 5
C BlueJ zum Laufen bekommen Java Basics - Anfänger-Themen 14
M BlueJ Problem Java Basics - Anfänger-Themen 6
P BlueJ hängt sich beim compilen auf Java Basics - Anfänger-Themen 9
P BlueJ Fehlermeldung - Illegal Start of Type Java Basics - Anfänger-Themen 8
S Klasse Zeichenfenster und BlueJ - Könnt ihr mir helfen? Java Basics - Anfänger-Themen 4
A Datentyp Char wird in BlueJ nur als leerer weißer Kasten dargestellt Java Basics - Anfänger-Themen 1
A JButton erscheint nicht (BlueJ) Java Basics - Anfänger-Themen 2
E BlueJ und Zeichenketten. S83 Übung 2.72 Java Basics - Anfänger-Themen 3
H BlueJ mehrere Klassen Java Basics - Anfänger-Themen 6
Binary.Coder Wechsel von BlueJ zu Eclipse Java Basics - Anfänger-Themen 7
G BlueJ jUnit Test Java Basics - Anfänger-Themen 6
G Klassenhierarchie in BlueJ. Java Basics - Anfänger-Themen 3
G BLueJ Aufgabe Java Basics - Anfänger-Themen 11
G Bluej startet nicht Java Basics - Anfänger-Themen 5
B BlueJ: Anfängerprojekt mit HashMap Java Basics - Anfänger-Themen 14
D String - BlueJ Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben