Ich habe das folgende Problem: Ich habe eine Zeichenfolge, die ich von einer MySQL-Datenbank (mit dem JDBC-Treiber) gelesen und muss es mit einem anderen String, den ich über TCP mit einem BufferedReader
erhalten. Wenn ich String.equals
verwende, wird false zurückgegeben, selbst wenn die Zeichenfolgen genau gleich sind. Ich habe sogar beide Zeichenfolgen an die Konsole gedruckt, um sicherzustellen, dass es keine Tippfehler oder Nullobjekte gibt. String.compareTo
gibt eine negative Zahl um -100 zurück.Java zwei gleiche Strings sind nicht gleich
Ich bin hier wirklich verwirrt und habe keine konkrete Idee, wie das zu beheben ist. Vielleicht hängt es mit der Codierung der Datenbank (UTF-8) zusammen?
Wie gewünscht, hier ist mein Code-Schnipsel:
public TeleportSign getTeleportSign(String target) {
// I used a HashMap, but I switched to an ArrayList in order to be able
// to compare the Strings directly.
//return signs.get(target);
for(TeleportSign s : signsList) {
// I am printing the Strings here. I even put stars to the left
// and the right of the String to make sure there are no
// spaces or new lines. s.getTarget() returns the String from the DB,
// target is the String sent over TCP.
System.out.println("*" + s.getTarget() + "* " +
String.valueOf(s.getTarget().compareTo(target))
+ " *" + target + "*");
if(s.getTarget().compareTo(target) == 0)
return s;
}
return null;
}
Und die Konsolenausgabe ist:
*TDM1* -84 *TDM1*
Vielen Dank im Voraus! Kapitän
Was ist die Zeichenfolge Werte ?? Bitte fügen Sie die Code-Snippets hinzu –
Was sind die zwei String-Werte? – Bathsheba
Den numerischen Zeichenwert jedes Zeichens in beiden Strings ausgeben. Du wirst bemerken, dass sie dem ungeschulten Auge nur * scheinen *! – Kayaman