Folgendes habe ich:
private static int countNumChars(String s) {
for(char c : s.toCharArray()){
if (Equals(c," "))
}
}
Dieser Code besagt jedoch, dass das Symbol für diese Methode nicht gefunden werden kann. Ich erinnere mich, dass Java einen solchen Vergleich hatte ... Irgendwelche Vorschläge?
java
char
whitespace
Jonik
quelle
quelle
' '
ohne Inhalt?Antworten:
char
ist ein primitiver Datentyp, mit dem er verglichen werden kann==
.Wenn Sie doppelte Anführungszeichen verwenden, erstellen Sie außerdem
String
Konstante (" "
), während es sich bei einfachen Anführungszeichen um einechar
Konstante (' '
) handelt.quelle
Der Code, den Sie benötigen, hängt davon ab, was Sie unter "leerem Raum" verstehen.
Wenn Sie das ASCII / Latin-1 / Unicode-Leerzeichen (0x20) oder SP meinen, dann:
Wenn Sie eines der traditionellen ASCII-Leerzeichen (SP, HT, VT, CR, NL) meinen, dann:
Wenn Sie ein Unicode-Leerzeichen meinen, dann:
Beachten Sie, dass es Unicode-Leerzeichen gibt, die zusätzliche ASCII-Steuercodes und einige andere Unicode-Zeichen in höheren Codeebenen enthalten. siehe den Javadoc für
Character.isWhitespace(char)
.Was Sie geschrieben haben, war Folgendes:
Dies ist auf mehreren Ebenen falsch. Erstens ist die Art und Weise, wie der Java-Compiler versucht, dies als Aufruf einer Methode mit der Signatur von zu interpretieren
boolean Equals(char, String)
.Equals
wäre normalerweise sowieso nicht der Name einer Methode. Die Java-Konvention besagt, dass Methodennamen mit einem Kleinbuchstaben beginnen.char
undString
ist nicht vergleichbar und kann nicht auf einen gemeinsamen Basistyp umgewandelt werden.Es gibt so etwas wie einen Komparator in Java, aber es ist eine Schnittstelle, keine Methode, und es wird wie folgt deklariert:
Mit anderen Worten, der Methodenname ist
compare
(nichtEquals
), er gibt eine Ganzzahl (kein Boolescher Wert) zurück und vergleicht zwei Werte, die auf den durch den Typparameter angegebenen Typ heraufgestuft werden können.Jemand (in einer gelöschten Antwort!) Sagte, er habe Folgendes versucht:
Das scheitert aus zwei Gründen:
" "
ist ein String-Literal und kein Zeichenliteral, und Java erlaubt keinen direkten Vergleich vonString
undchar
Werten.Sie sollten NIEMALS Strings oder String-Literale mit vergleichen
==
. Der==
Operator eines Referenztyps vergleicht die Objektidentität und nicht den Objektwert. Im FalleString
ist es üblich, unterschiedliche Objekte mit unterschiedlicher Identität und gleichem Wert zu haben. Ein==
Test gibt oft die falsche Antwort ... aus der Perspektive dessen, was Sie hier versuchen.quelle
Du könntest benutzen
oder eine der anderen verfügbaren Methoden in der Zeichenklasse.
funktioniert auch.
quelle
Da
char
es sich um einen primitiven Typ handelt, können Sie einfach schreibenc == ' '
.Sie müssen nur
equals()
Referenztypen wieString
oder aufrufenCharacter
.quelle
Mein Vorschlag wäre:
quelle
Um Zeichen zu vergleichen, verwenden Sie den
==
Operator:quelle
Character.isSpaceChar(c) || Character.isWhitespace(c)
arbeitete für mich.quelle
In diesem Fall denken Sie an die String-Vergleichsfunktion
"String".equals("some_text")
. Zeichen müssen diese Funktion nicht verwenden. Stattdessen reicht ein Standardvergleichsoperator==
aus.quelle
Auf den ersten Blick wird Ihr Code nicht kompiliert. Da die verschachtelte if-Anweisung keine geschweiften Klammern enthält, wird in der nächsten Zeile der Code berücksichtigt, den sie ausführen soll. Außerdem vergleichen Sie ein Zeichen mit einem String "". Versuchen Sie stattdessen, die Werte als Zeichen zu vergleichen. Ich denke, die richtige Syntax wäre:
Aber andererseits bin ich mit der
"Equal"
Klasse nicht vertrautquelle
Du kannst es versuchen:
Oder:
quelle
Zum Vergleichen müssen
Strings
Sie das Schlüsselwort equals verwenden .quelle
equals
In Java gibt es kein Schlüsselwort. Es ist eine Kennung. 3) Dac
es sich um einenchar
(primitiven Typ !!) handelt, können Sie nicht anrufenc.equals(...)
. 4) Selbst wenn Sie könnten, gibt es keinenchar
Wert, der zugeordnet ist""
. Letzteres bedeutet eine Zeichenfolge mit "keinen Zeichen". Das kann nicht mit einem Charakter übereinstimmen.