这就是我所拥有的:
private static int countNumChars(String s) {
for(char c : s.toCharArray()){
if (Equals(c," "))
}
}
但该代码表示找不到该方法的符号。我记得Java有这样的比较器...有什么建议吗?
答案 0 :(得分:194)
if (c == ' ')
char
是原始数据类型,因此可以与==
进行比较。
此外,通过使用双引号,您可以创建String
常量(" "
),而使用单引号时,它是char
常量(' '
)。
答案 1 :(得分:84)
您需要的代码取决于“空白区域”的含义。
如果您的意思是ASCII / Latin-1 / Unicode空格字符(0x20)又名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字符;请参阅Character.isWhitespace(char)
的javadoc。
你写的是:
if (Equals(ch, " ")) {
// ...
}
这在许多层面都是错误的。首先,Java编译器尝试解释的方式是调用签名为boolean Equals(char, String)
的方法。
Equals
通常不会是方法的名称。 Java约定是方法名称以小写字母开头。char
和String
无法比较,无法转换为公共基类型。在Java中有比较器这样的东西,但它是一个接口而不是一个方法,并且声明如下:
public interface Comparator<T> {
public int compare(T v1, T v2);
}
换句话说,方法名称为compare
(不是Equals
),它返回一个整数(不是布尔值),并将两个可以提升的值进行比较。类型参数。
某人(在删除的答案中!)说他们试过这个:
if (c == " ")
失败有两个原因:
" "
是字符串文字,而不是字符文字,Java不允许直接比较String
和char
值。
您不应该使用==
比较字符串或字符串文字。引用类型上的==
运算符比较对象标识,而不是对象值。在String
的情况下,具有不同身份和相同值的不同对象是常见的。从您在此处尝试的角度来看,==
测试经常会给出错误答案 ....
答案 2 :(得分:20)
您可以使用
Character.isWhitespace(c)
或Character类中的任何其他可用方法。
if (c == ' ')
也有效。
答案 3 :(得分:19)
由于char
是基本类型,因此您只需编写c == ' '
您只需为equals()
或String
等参考类型致电Character
。
答案 4 :(得分:12)
我的建议是:
if (c == ' ')
答案 5 :(得分:11)
要比较字符,请使用==
运算符:
if (c == ' ')
答案 6 :(得分:3)
在这种情况下,您正在考虑字符串比较函数"String".equals("some_text")
。字符不需要使用此功能。相反,标准==
比较运算符就足够了。
private static int countNumChars(String s) {
for(char c : s.toCharArray()){
if (c == ' ') // your resulting outcome
}
}
答案 7 :(得分:3)
乍一看,您的代码无法编译。由于嵌套的if语句没有任何大括号,因此它会考虑下一行应该执行的代码。此外,您正在将字符串与字符串“”进行比较。尝试将这些值作为字符进行比较。我认为正确的语法是:
if(c == ' '){
//do something here
}
但话说回来,我不熟悉"Equal"
类
答案 8 :(得分:3)
Character.isSpaceChar(c) || Character.isWhitespace(c)
为我工作。
答案 9 :(得分:2)
您可以尝试:
if(Character.isSpaceChar(ch))
{
// Do something...
}
或者:
if((int) ch) == 32)
{
// Do something...
}
答案 10 :(得分:-3)
要比较Strings
,您必须使用等于关键字。
if(c.equals(""))
{
}