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
您需要的代码取决于"空白空间"的含义.
如果你的意思是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)
也有效.
| 归档时间: |
|
| 查看次数: |
458109 次 |
| 最近记录: |