Ich möchte eine Aktion NUR dann durchführen, wenn meine Zeichenfolge einen sinnvollen Wert hat. Also, ich habe dies versucht.
if (!myString.equals("")) {
doSomething
}
und dies
if (!myString.equals(null)) {
doSomething
}
und dies
if ( (!myString.equals("")) && (!myString.equals(null))) {
doSomething
}
und dies
if ( (!myString.equals("")) && (myString!=null)) {
doSomething
}
und dies
if ( myString.length()>0) {
doSomething
}
Und in allen Fällen ist mein Programm doSomething
trotz der Tatsache, dass mein String leer ist. Sie ist gleichbedeutend mit null
. Was ist also falsch daran?
HINZUFÜGEN:
Ich habe die Ursache des Problems gefunden. Die Variable wurde als Zeichenkette deklariert und als Folge davon, null
die dieser Variable zugewiesen wurde, wurde transformiert in "null"
! So, if (!myString.equals("null"))
funktioniert.
2 Stimmen
null
hat keine Methoden, also auch nichtequals()
. WennmyString
warennull
wie würden Sie jemals eine Methode darauf aufrufen? :)1 Stimmen
Darf ich vorschlagen, dass Sie
System.out.println(myString)
unmittelbar vor dem if-Block, damit Sie sehen können, was dort steht?1 Stimmen
Woher wissen Sie, dass "es gleichzusetzen ist mit
null
"?7 Stimmen
null
die dieser Variable zugewiesen wurde, wurde umgewandelt in"null"
-- Das ist eine schreckliche Idee. Versuchen Sie, dieses Design zu ändern, wenn das möglich ist.9 Stimmen
Igitt - ich glaube nicht, dass die Prüfung, ob (!myString.equals("null")) die beste Lösung ist. Ich vermute, die meisten würden den Punkt, an dem die Zeichenkette "null" zu myString zugewiesen wurde, als Fehler betrachten.
1 Stimmen
Ich möchte nicht, dass irgendjemand verwirrt wird, wie ich es getan habe, also zur Klarstellung: wenn kein Wert einer Zeichenfolge zugewiesen wird, erhält sie nicht den Wert "null", sondern einen Wert von null (ohne Paranthese, was im Grunde bedeutet, dass nichts vorhanden ist), die Lösung, die im "hinzugefügten Abschnitt der Frage bereitgestellt wird, ist sehr spezifisch für Romans Programm.