Java: EIngabe wird nicht als gleich mit Konstante erkannt?

OP (Firma: Q3) #4391196
Lesenswert?

Ich bin gerde dabei, mich in Java einzuarbeiten. Dazu habe ich ein 
kleines Tool mit einem primitiven Menü (Konsole) in Arbeit. Wenn man 
eine 1 drückt (plus Enter) wird Funktion A aufgerufen, wenn man eine 2 
drückt ... usw.

Alles funkioniert, ausser einer Sache, die mich fast um den Verstand 
bringt: Das Menü läuft in einem Loop mit While am Anfang. Dort steht:

String comp="X";
while (input != comp) { ... }

Also sollte doch bei einem Pre-Check-Loop die Sache ein Ende finden, 
wenn input gleich "X" ist, oder nicht? Wird aber einfach nicht erkannt!

Ich habe mit von beiden den Datentyp und die Länge ausgeben lassen. 
Beide (also input und comp) haben die Länge 1 und den Datentyp 
java.lang.String. Trotzdem werden sie nicht als gleich akzeptiert. Warum 
nicht????

*input wird mit toUppercase() groß gemacht
* die Eingabe erfolgt mittels readLine aus einem BufferedReader
Gast #4392628
Lesenswert?

Ein Vergleich mit operatoren vergleicht die Referenz des Objektes, nicht 
den Inhalt. Also quasi den "pointer".

Strings vergleicht man mit Stringobjekt.compareTo(other String) oder 
equals()

so wie man in C ja auch nicht einfach ein "==" benutzt, sondern ein 
strcmp()

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren