Forum: PC-Programmierung Java: EIngabe wird nicht als gleich mit Konstante erkannt?


von Frank E. (Firma: Q3) (qualidat)


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

: Bearbeitet durch User
von jemand (Gast)


Lesenswert?

= und != vergleichen in Java bei Strings die Objekt-Referenz.

Du kannst comp.equals(input) verwenden.

von Der Andere (Gast)


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()

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Frank E. schrieb:
> input wird mit toUppercase() groß gemacht

Und das kann man sich auch sparen wenn man gleich 
http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#equalsIgnoreCase%28java.lang.String%29 
benutzt...

von Noch einer (Gast)


Lesenswert?

Gibt in Java ein "String.intern()". Unter diesem Stichwort findest du 
Erklärungen zu "equals()" und "==".

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.