这是我得到的:
private static int countNumChars(String s) {
for(char c : s.toCharArray()){
if (Equals(c," "))
}
}
但那段代码显示找不到该方法的符号。我记得Java有一个类似的比较器...有什么建议吗?
这是我得到的:
private static int countNumChars(String s) {
for(char c : s.toCharArray()){
if (Equals(c," "))
}
}
但那段代码显示找不到该方法的符号。我记得Java有一个类似的比较器...有什么建议吗?
if (c == ' ')
char
是一种原始数据类型,因此可以使用==
进行比较。
同时,如果你使用双引号,则创建一个String
常量(" "
),而如果使用单引号,则是一个char
常量(' '
)。
你需要的代码取决于你所说的“空白区域”的含义。
If you mean the ASCII / Latin-1 / Unicode space character (0x20) aka SP, then:
if (ch == ' ') {
// ...
}
If you mean any of the traditional ASCII whitespace characters (SP, HT, VT, CR, NL), then:
if (ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n' || ch == '\x0b') {
// ...
}
If you mean any Unicode whitespace character, then:
if (Character.isWhitespace(ch)) {
// ...
}
Character.isWhitespace(char)
的javadoc。 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
(不是 Equals
),它返回一个整数(而不是布尔值),并比较两个可以提升为类型参数所给定类型的值。
if (c == " ")
这种方法失败的原因有两个:
" "
是一个字符串常量而不是字符常量,Java 不允许直接比较 String
和 char
值。
你永远不应该使用 ==
来比较字符串或字符串常量。在引用类型上,==
运算符比较的是对象的标识而不是对象的值。在 String
的情况下,通常会有不同的对象具有不同的标识和相同的值。一个 ==
测试将会经常给出错误的答案......从你在这里尝试做的事情的角度来看。
标签。Character.isWhitespace(c)
或使用Character类中的任何其他可用方法。
if (c == ' ')
也可以正常工作。
由于char
是一种基本类型,你可以直接写成c == ' '
。
只有对于引用类型,如String
或Character
,才需要调用equals()
。
我的建议是:
if (c == ' ')
要比较字符,您可以使用 ==
运算符:
if (c == ' ')
Character.isSpaceChar(c) || Character.isWhitespace(c)
可以解决我的问题。
在这种情况下,您正在考虑字符串比较函数"String".equals("some_text")
。字符不需要使用此函数。相反,标准的==
比较运算符就足够了。
private static int countNumChars(String s) {
for(char c : s.toCharArray()){
if (c == ' ') // your resulting outcome
}
}
if(Character.isSpaceChar(ch))
{
// Do something...
}
或者:
if((int) ch) == 32)
{
// Do something...
}
乍一看,你的代码不会编译。由于嵌套if语句没有任何大括号,它将认为下一行是应该执行的代码。此外,你正在将一个char与一个字符串" "进行比较。尝试将值作为字符进行比较。我认为正确的语法应该是:
if(c == ' '){
//do something here
}
但是,我并不熟悉"Equal"
类
' '
? - Andreas Dolk