Erste text-Wert aus einem jButton
Also muss ich einfach nur prüfen, ob ein button geklickt text ist "X"
oder "O"
(machen tic tac toe)
Dieser code funktioniert nicht:
if (jButton1.getText()=="X")
Aber der folgende code funktioniert:
String jButText = jButton1.getText();
if (jButText=="X")
Warum nicht das erste bit der code funktioniert, wenn der zweite nicht? Braucht es nicht etwas mehr sein wie wenn (jButton1.getText().toString=="X"
)? Übrigens, ich glaube nicht, dass toString
existiert in Java. Das ist nur etwas den Gegenwert in Visual Basic, das ist das, was ich normalerweise verwenden, zum erstellen von GUIs.
equals("X") und nicht == "X"
Dies ist NICHT ein Duplikat des gleichen String-Vergleich Frage, wird gebeten, sich mehrmals pro Tag. Die Frage ist hier, warum das zweite snippet funktioniert, aber nicht die ersten. Wenn es tatsächlich wahr ist, dass das zweite snippet funktioniert und die erste nicht, dann weiß ich nicht, die Antwort. Ich hätte erwartet, dass Sie generieren den gleichen byte-code.
toString() existieren in java, jedoch getText() schon gibt einen String zurück, also es würde nicht viel Sinn zu laufen toString() auf.
Welche java version verwenden Sie? Dies ist nicht reproduzierbar mit java 1.7.0_45.
Dies ist NICHT ein Duplikat des gleichen String-Vergleich Frage, wird gebeten, sich mehrmals pro Tag. Die Frage ist hier, warum das zweite snippet funktioniert, aber nicht die ersten. Wenn es tatsächlich wahr ist, dass das zweite snippet funktioniert und die erste nicht, dann weiß ich nicht, die Antwort. Ich hätte erwartet, dass Sie generieren den gleichen byte-code.
toString() existieren in java, jedoch getText() schon gibt einen String zurück, also es würde nicht viel Sinn zu laufen toString() auf.
Welche java version verwenden Sie? Dies ist nicht reproduzierbar mit java 1.7.0_45.
InformationsquelleAutor user3010613 | 2013-11-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieses Verhalten ist nicht reproduzierbar, java 1.7.0_45 oder 1.7.0_25, es könnte einem komisch vorkommen von String Praktikum für Ihre java-version.
Damit Ihr code richtig funktioniert auf allen java-Versionen müssen Sie
equals()
==
vergleicht Objekte mittlerweile.equals()
vergleicht den Inhalt der string-Objekte.- Ein Praktikum ist, was ich dachte zunächst auch, aber es erklärt nicht, warum die erste Bedingung funktioniert nicht. Wenn "X" ist ein Praktikant dann getText liefert "X", ob Sie es einer Variablen zuweisen oder nicht.
Es ist, weil
jButton1.setText()
explizit erstellt ein neues string-Objekt, das in diesem Vergleich.Ich bin nicht davon überzeugt. OP nicht sagen, dass er/Sie schrieb
new String(jButton1.getText())
, so scheint dies nicht zu gelten. Es ist sicherlich nicht erklären, warum die OP ' s zwei original-snippets Verhalten sich anders als jeder andere. Meine ehrliche Verdacht ist, dass OP hat einen Fehler gemacht, das Verständnis seiner/Ihrer Ergebnisse.Wenn
setText
erstellt eine neueString
Objekt, dann, dass noch nicht erklären, warum die zweite snippet funktioniert.InformationsquelleAutor spydon
Dies war auch das fahren mich die Nüsse bei Verwendung der AWT-Klasse Button... Hier ist die Antwort: Es gibt keine .getText () - Methode für eine Schaltfläche..., die Sie verwenden müssen .getLabel()
Nun, die Geschichte für JButtons: Je nach Ihrer version von java, getLabel() veraltet, und schließlich ersetzt durch getText... Sind nicht namespaces wunderbar?
InformationsquelleAutor Roy Slezak
InformationsquelleAutor Suhad Mendis
in java, wenn du strings vergleichen mit == , du hast den Vergleich mit den Speicher-Adressen, um zu überprüfen, ob zwei strings enthält denselben text, den Sie anrufen sollte .equals () -
Dies beantwortet nicht die Frage. Siehe mein Kommentar unter der Frage.
du hast Recht @spydon, mein Fehler. 😉
InformationsquelleAutor Victor Ribeiro da Silva Eloy