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
= und != vergleichen in Java bei Strings die Objekt-Referenz. Du kannst comp.equals(input) verwenden.
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()
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...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.