Here's what I've got:
private static int countNumChars(String s) {
for(char c : s.toCharArray()){
if (Equals(c," "))
}
}
But that code says it cannot find Symbol for that method. I remember Java having a comparer like this... Any suggestions?
if (c == ' ')
char
是基本数据类型,因此它可与被比较==
。
此外,通过使用双引号创建String
常量( " "
),而用单引号这是一个char
常量( ' '
)。
你需要的代码取决于你的意思是“空的空间”是什么。
如果你指的是ASCII /拉丁-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字符; 看到的Javadoc Character.isWhitespace(char)
。
你所写的是这样的:
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 == " ")
失败的原因有两个:
你可以使用
Character.isWhitespace(c)
或任何的Character类的其他可用的方法。
if (c == ' ')
也适用。
由于char
是一种原始的类型,你可以只写c == ' '
。
你只需要调用equals()
以供参考类型,如String
或Character
。
在这种情况下,你所想的字符串比较函数的"String".equals("some_text")
字符不需要使用此功能。 取而代之的是标准的==
比较操作就足够了。
private static int countNumChars(String s) {
for(char c : s.toCharArray()){
if (c == ' ') // your resulting outcome
}
}
乍一看,你的代码将无法编译。 由于if语句没有任何括号中的嵌套,它会考虑下一行,它应该执行代码。 同时,要针对字符串比较一个char,“”。 作为尝试,而不是字符比较值。 我认为正确的语法是:
if(c == ' '){
//do something here
}
不过话又说回来,我不熟悉的"Equal"
类
Character.isSpaceChar(c) || Character.isWhitespace(c)
Character.isSpaceChar(c) || Character.isWhitespace(c)
为我工作。
你可以试试:
if(Character.isSpaceChar(ch))
{
// Do something...
}
要么:
if((int) ch) == 32)
{
// Do something...
}