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
是一种原始数据类型,因此可以与之进行比较==
.
此外,通过使用双引号,您可以创建String
constant(" "
),而使用单引号则是char
常量(' '
).
Ste*_*n C 85
您需要的代码取决于"空白空间"的含义.
如果你的意思是ASCII/Latin-1/Unicode空格字符(0x20)又名SP,那么:
if (ch == ' ') {
// ...
}
Run Code Online (Sandbox Code Playgroud)如果您指的是任何传统的ASCII空白字符(SP,HT,VT,CR,NL),那么:
if (ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n' || ch == '\x0b') {
// ...
}
Run Code Online (Sandbox Code Playgroud)如果您的意思是任何Unicode空白字符,那么:
if (Character.isWhitespace(ch)) {
// ...
}
Run Code Online (Sandbox Code Playgroud)请注意,Unicode空格包括其他 ASCII控制代码,以及更高代码平面中的一些其他Unicode字符; 看到javadoc Character.isWhitespace(char)
.
你写的是这个:
if (Equals(ch, " ")) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
这在许多层面都是错误的.首先,Java编译器尝试解释的方式是调用签名为的方法boolean Equals(char, String)
.
Equals
通常不会是方法的名称.Java约定是方法名称以小写字母开头.char
并String
没有可比性,不能转换为一个共同的基本类型.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不允许直接比较String
和char
值.
你不应该使用比较字符串或字符串文字==
.==
引用类型上的运算符比较对象标识,而不是对象值.在String
通常情况下,具有不同身份和相同值的不同对象是常见的.一种==
测试将经常给出错误的答案 ......从你正试图在这里做透视.
Cor*_*nus 19
你可以用
Character.isWhitespace(c)
Run Code Online (Sandbox Code Playgroud)
或Character类中的任何其他可用方法.
if (c == ' ')
Run Code Online (Sandbox Code Playgroud)
也有效.