Answers:
if (c == ' ')
char
是原始数据类型,因此可以与进行比较==
。
另外,通过使用双引号可以创建String
常量(" "
),而使用单引号可以是char
常量(' '
)。
您需要的代码取决于“空白”的含义。
如果您是指ASCII /拉丁文-1 / Unicode空格字符(0x20)aka SP,则:
if (ch == ' ') {
// ...
}
如果您是指任何传统的ASCII空格字符(SP,HT,VT,CR,NL),则:
if (ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n' || ch == '\x0b') {
// ...
}
如果您是指任何Unicode空格字符,则:
if (Character.isWhitespace(ch)) {
// ...
}
请注意,有Unicode的空白包括附加的 ASCII控制码,并在更高的代码平面一些其他Unicode字符; 请参阅javadoc Character.isWhitespace(char)
。
您写的是这样的:
if (Equals(ch, " ")) {
// ...
}
在许多级别上这是错误的。首先,Java编译器尝试解释的方式是对具有的签名的方法的调用boolean Equals(char, String)
。
Equals
反正通常不是方法的名称。Java约定是方法名称以小写字母开头。char
并String
没有可比性,不能转换为一个共同的基本类型。Java中有诸如Comparator之类的东西,但是它是一个接口而不是方法,并且声明如下:
public interface Comparator<T> {
public int compare(T v1, T v2);
}
换句话说,方法名是compare
(not Equals
),它返回一个整数(不是布尔值),并且将可以提升为type参数给定类型的两个值进行比较。
有人(在已删除的答案中!)说,他们尝试过此操作:
if (c == " ")
失败有两个原因:
" "
是一个字符串文字,而不是字符文字,并且Java不允许直接比较String
和char
值。
您永远不要使用来比较字符串或字符串文字==
。==
引用类型上的运算符比较对象标识,而不是对象值。在这种情况下,String
通常会有具有不同标识和相同值的不同对象。一种==
测试将经常给出错误的答案 ......从你正试图在这里做透视。
在这种情况下,您正在考虑String比较功能"String".equals("some_text")
。字符不需要使用此功能。取而代之的是标准==
比较运算符就足够了。
private static int countNumChars(String s) {
for(char c : s.toCharArray()){
if (c == ' ') // your resulting outcome
}
}
' '
没有内容?