如何检查char是否等于空格?

96 java whitespace char

这是我得到的:

private static int countNumChars(String s) {
    for(char c : s.toCharArray()){
        if (Equals(c," "))
    }
}
Run Code Online (Sandbox Code Playgroud)

但该代码表示​​无法找到该方法的符号.我记得Java有这样的比较器...有什么建议吗?

Nik*_*bak 202

if (c == ' ')
Run Code Online (Sandbox Code Playgroud)

char是一种原始数据类型,因此可以与之进行比较==.

此外,通过使用双引号,您可以创建Stringconstant(" "),而使用单引号则是char常量(' ').


Ste*_*n C 85

您需要的代码取决于"空白空间"的含义.

请注意,Unicode空格包括其他 ASCII控制代码,以及更高代码平面中的一些其他Unicode字符; 看到j​​avadoc Character.isWhitespace(char).


你写的是这个:

    if (Equals(ch, " ")) {
        // ...
    }
Run Code Online (Sandbox Code Playgroud)

这在许多层面都是错误的.首先,Java编译器尝试解释的方式是调用签名为的方法boolean Equals(char, String).

  • 这是错误的,因为没有方法,正如编译器在错误消息中报告的那样.
  • Equals通常不会是方法的名称.Java约定是方法名称以小写字母开头.
  • 您的代码(如书面)试图比较字符和字符串,但charString没有可比性,不能转换为一个共同的基本类型.

Java中有比较器这样的东西,但它是一个接口而不是一个方法,它被声明如下:

    public interface Comparator<T> {
        public int compare(T v1, T v2);
    }
Run Code Online (Sandbox Code Playgroud)

换句话说,方法名称是compare(not Equals),它返回一个整数(不是布尔值),并将两个可以提升的值进行比较,类型参数给出的类型.


有人(在删除的答案中!)说他们试过这个:

    if (c == " ")
Run Code Online (Sandbox Code Playgroud)

这失败有两个原因:

  • " "是字符串文字而不是字符文字,Java不允许直接比较Stringchar值.

  • 你不应该使用比较字符串或字符串文字==.==引用类型上的运算符比较对象标识,而不是对象值.在String通常情况下,具有不同身份和相同值的不同对象是常见的.一种==测试将经常给出错误的答案 ......从你正试图在这里做透视.


Cor*_*nus 19

你可以用

Character.isWhitespace(c)
Run Code Online (Sandbox Code Playgroud)

或Character类中的任何其他可用方法.

  if (c == ' ')
Run Code Online (Sandbox Code Playgroud)

也有效.


SLa*_*aks 18

既然char是原始类型,你可以写c == ' '.
您只需要调用equals()类似String或的引用类型Character.


cod*_*ict 11

要比较字符,请使用==运算符:

if (c == ' ')
Run Code Online (Sandbox Code Playgroud)


Mar*_*ner 11

我的建议是:

if (c == ' ')
Run Code Online (Sandbox Code Playgroud)


小智 5

Character.isSpaceChar(c) || Character.isWhitespace(c) 为我工作。