这是我得到的:
private static int countNumChars(String s) {
for(char c : s.toCharArray()){
if (Equals(c,""))
}
}
但是该代码表示无法为该方法找到Symbol。 我记得Java拥有这样的比较器...有什么建议吗?
空的空间-没有内容的?
if (c == ' ')
char是原始数据类型,因此可以与==进行比较。
另外,通过使用双引号创建String常数(""),而使用单引号则是char常数(' ')。
您需要的代码取决于"空白"的含义。
如果您是指ASCII /拉丁文-1 / Unicode空格字符(0x20)aka SP,则:
if (ch == ' ') {
// ...
}
如果您是指任何传统的ASCII空格字符(SP,HT,VT,CR,NL),则:
if (ch == ' ' || ch == '\t' || ch == '
' || ch == '
' || 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中有诸如Comparator之类的东西,但是它是一个接口而不是方法,并且声明如下:
public interface Comparator< T > {
public int compare(T v1, T v2);
}
换句话说,方法名是compare(不是Equals),它返回一个整数(不是布尔值),并且将可以提升为type参数给定类型的两个值进行比较。
有人(在已删除的答案中!)说,他们尝试过此操作:
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比较函数"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"类不熟悉
要比较Strings,您必须使用equals关键字。
if(c.equals(""))
{
}
1)这个问题是关于比较字符,而不是字符串。 2)Java中没有equals关键字。 它是一个标识符。 3)由于c是char(原始类型!),因此无法调用c.equals(...)。 4)即使可以,也没有char值映射到""。 后者表示"没有字符"的字符串。 无法匹配字符。
回答此问题的关键是想出"空空间"的含义,这种含义在上下文中具有某种意义。