Le code dont vous avez besoin dépend de ce que vous entendez par "un espace vide".
-
Si vous voulez parler du caractère d'espace ASCII / Latin-1 / Unicode (0x20) alias SP, alors.. :
if (ch == ' ') {
// ...
}
-
Si vous voulez parler de l'un des caractères d'espacement ASCII traditionnels (SP, HT, VT, CR, NL), alors.. :
if (ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n' || ch == '\x0b') {
// ...
}
-
Si vous voulez dire tout caractère d'espacement Unicode, alors :
if (Character.isWhitespace(ch)) {
// ...
}
Notez qu'il y a des inclusions d'espaces blancs Unicode supplémentaire Codes de contrôle ASCII, y certains autres caractères Unicode dans des plans de code plus élevés ; voir la javadoc de Character.isWhitespace(char)
.
Ce que vous avez écrit est ceci :
if (Equals(ch, " ")) {
// ...
}
C'est faux à bien des égards. Premièrement, la façon dont le compilateur Java essaie d'interpréter cela est un appel à une méthode dont la signature est boolean Equals(char, String)
.
- C'est faux car aucune méthode n'existe, comme le compilateur l'a signalé dans le message d'erreur.
-
Equals
ne serait normalement pas le nom d'une méthode de toute façon. La convention Java veut que les noms de méthodes commencent par une lettre minuscule.
- Votre code (tel qu'il est écrit) essayait de comparer un caractère et une chaîne de caractères, mais
char
y String
ne sont pas comparables et ne peuvent pas être coulés dans un type de base commun.
Il existe un comparateur en Java, mais c'est une interface et non une méthode, et il est déclaré comme ceci :
public interface Comparator<T> {
public int compare(T v1, T v2);
}
En d'autres termes, le nom de la méthode est compare
(pas Equals
), elle renvoie un entier (et non un booléen), et elle 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 qu'il avait essayé ceci :
if (c == " ")
Cela échoue pour deux raisons :
-
" "
est un littéral de type String et non un littéral de type caractère, et Java ne permet pas la comparaison directe de String
y char
valeurs.
-
Vous ne devez JAMAIS comparer des chaînes de caractères ou des littéraux de chaînes de caractères à l'aide de la fonction ==
. Le site ==
sur un type de référence compare l'identité de l'objet, et non sa valeur. Dans le cas de String
il est courant d'avoir différents objets ayant une identité différente et la même valeur. Un site ==
le test sera donnent souvent une mauvaise réponse ... du point de vue de ce que vous essayez de faire ici.