如何检查一个字符是否等于一个空的空间?
这是我得到的:
private static int countNumChars(String s) { for(char c : s.toCharArray()){ if (Equals(c," ")) } }
但是该代码表示无法find该方法的符号。 我记得Java有这样的比较器…有什么build议吗?
if (c == ' ')
char
是一个原始的数据types,所以它可以与==
比较。
此外,通过使用双引号,您创buildString
常量( " "
),而与单引号它是一个char
常量( ' '
)。
你需要的代码取决于你的意思是“一个空的空间”。
-
如果您的意思是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约定是方法名以小写字母开头。 - 你的代码(正如所写的)试图比较一个字符和一个string,但是
char
和String
是不可比较的,不能转换为一个通用的基本types。
在Java中有比较器这样的东西,但它不是一个方法的接口,它是这样声明的:
public interface Comparator<T> { public int compare(T v1, T v2); }
换句话说,方法名称是compare
(不Equals
),它返回一个整数(而不是布尔值),它比较两个可以提升到type参数给定types的值。
有人(在删除答案!)说他们试过这个:
if (c == " ")
这失败的原因有两个:
-
" "
是一个string文字而不是字符文字,Java不允许直接比较String
和char
值。 -
你应该永远不要使用
==
比较string或string。 引用types的==
运算符比较对象标识,而不是对象值。 在String
的情况下,通常有不同的对象具有不同的身份和相同的值。 一个==
testing通常会给出错误的答案 …从你想要在这里做什么的angular度来看。
由于char
是一个原始types,所以你可以只写c == ' '
。
你只需要调用equals()
来引用types如String
或Character
。
你可以使用
Character.isWhitespace(c)
或Character类中的其他可用方法。
if (c == ' ')
也有效。
我的build议是:
if (c == ' ')
要比较字符,请使用==
运算符:
if (c == ' ')
在这种情况下,您正在考虑string比较函数"String".equals("some_text")
。 字符不需要使用这个function。 相反,一个标准的==
比较运算符就足够了。
private static int countNumChars(String s) { for(char c : s.toCharArray()){ if (c == ' ') // your resulting outcome } }
乍一看,你的代码不会被编译。 由于嵌套if语句没有任何大括号,因此它会考虑下一行代码执行。 此外,你正在比较一个string,“”。 尝试将值作为字符进行比较。 我认为正确的语法是:
if(c == ' '){ //do something here }
但是再次,我对"Equal"
课不熟悉
你可以试试:
if(Character.isSpaceChar(ch)) { // Do something... }
要么:
if((int) ch) == 32) { // Do something... }
Character.isSpaceChar(c) || Character.isWhitespace(c)
Character.isSpaceChar(c) || Character.isWhitespace(c)
为我工作。
要比较Strings
你必须使用equals关键字。
if(c.equals("")) { }