Voici ce que j'ai:
private static int countNumChars(String s) {
for(char c : s.toCharArray()){
if (Equals(c," "))
}
}
Mais ce code indique qu'il ne peut pas trouver de symbole pour cette méthode. Je me souviens que Java avait un comparateur comme celui-ci ... Des suggestions?
java
char
whitespace
Jonik
la source
la source
' '
sans contenu?Réponses:
char
est un type de données primitif, il peut donc être comparé à==
.De plus, en utilisant des guillemets doubles, vous créez une
String
constante (" "
), tandis qu'avec des guillemets simples, c'est unechar
constante (' '
).la source
Le code dont vous avez besoin dépend de ce que vous entendez par «un espace vide».
Si vous voulez dire le caractère d'espace ASCII / Latin-1 / Unicode (0x20) aka SP, alors:
Si vous voulez dire l'un des caractères d'espacement ASCII traditionnels (SP, HT, VT, CR, NL), alors:
Si vous voulez dire un espace blanc Unicode, alors:
Notez qu'il existe des espaces blancs Unicode comprenant des codes de contrôle ASCII supplémentaires et certains autres caractères Unicode dans des plans de code supérieurs; voir le javadoc pour
Character.isWhitespace(char)
.Voici ce que vous avez écrit:
C'est faux à plusieurs niveaux. Premièrement, la façon dont le compilateur Java essaie d'interpréter cela est comme un appel à une méthode avec une signature de
boolean Equals(char, String)
.Equals
ne serait pas normalement le nom d'une méthode de toute façon. La convention Java est que les noms de méthode commencent par une lettre minuscule.char
etString
ne sont pas comparables et ne peuvent pas être convertis en un type de base commun.Il existe un comparateur en Java, mais c'est une interface pas une méthode, et il est déclaré comme ceci:
En d'autres termes, le nom de la méthode est
compare
(nonEquals
), il renvoie un entier (pas un booléen) et il compare deux valeurs qui peuvent être promues au type donné par le paramètre type.Quelqu'un (dans une réponse supprimée!) A dit avoir essayé ceci:
Cela échoue pour deux raisons:
" "
est un littéral de chaîne et non un littéral de caractère, et Java ne permet pas la comparaison directe des valeursString
etchar
.Vous ne devez JAMAIS comparer des chaînes ou des littéraux de chaîne en utilisant
==
. L'==
opérateur sur un type de référence compare l'identité de l'objet, pas la valeur de l'objet. Dans ce cas,String
il est courant d'avoir des objets différents avec une identité différente et la même valeur. Un==
test donnera souvent la mauvaise réponse ... du point de vue de ce que vous essayez de faire ici.la source
Vous pourriez utiliser
ou l'une des autres méthodes disponibles dans la classe Character.
fonctionne également.
la source
Puisqu'il
char
s'agit d'un type primitif, vous pouvez simplement écrirec == ' '
.Il vous suffit d'appeler
equals()
des types de référence commeString
ouCharacter
.la source
Ma suggestion serait:
la source
Pour comparer le caractère, vous utilisez l'
==
opérateur:la source
Character.isSpaceChar(c) || Character.isWhitespace(c)
travaillé pour moi.la source
Dans ce cas, vous pensez à la fonction de comparaison de chaînes
"String".equals("some_text")
. Les caractères n'ont pas besoin d'utiliser cette fonction. Au lieu de cela, un==
opérateur de comparaison standard suffira.la source
À première vue, votre code ne se compilera pas. Étant donné que l'instruction if imbriquée n'a pas d'accolades, elle considérera la ligne suivante comme le code qu'elle doit exécuter. De plus, vous comparez un caractère à une chaîne "". Essayez plutôt de comparer les valeurs sous forme de caractères. Je pense que la syntaxe correcte serait:
Mais là encore, je ne connais pas la
"Equal"
classela source
Tu peux essayer:
Ou:
la source
Pour comparer,
Strings
vous devez utiliser le mot clé equals .la source
equals
mot-clé en Java. C'est un identifiant. 3) Puisqu'ilc
s'agit d'unchar
(type primitif !!), vous ne pouvez pas appelerc.equals(...)
. 4) Même si vous le pouviez, il n'y a aucunechar
valeur à laquelle correspond""
. Ce dernier signifie une chaîne avec «aucun caractère». Cela ne peut pas correspondre à un personnage.