我正在尝试将我的 char 数组中的索引与字符串进行比较,我正在使用 .equals 方法,但我遇到了错误。有什么帮助吗?
if (j[1].equals("A"))
{j[1] = 10;}
我不断收到此错误:
int cannot be dereferenced
else if (j[1].equals("A"))
试试这个:
if (j[1] == 'A')
如果j
数组包含char
s,那么您必须将其值与另一个比较char
,而不是 a String
(即使字符串的长度为 1) - 它们是不同的数据类型。并且因为 achar
是原始类型,==
所以用于相等比较。
为了比较单个字符,您需要使用==
运算符,因为char
它是原始类型,Java 不允许调用原始类型的方法。此外,您不能直接与字符串进行比较,您需要与char
. 类型的常量char
用单引号写成,而不是用双引号表示字符串常量。
因此,您的代码将是:
if (j[1] == 'A')
然后,您应该使用另一个变量来存储该值10
。尽管理论上您可以将其存储在数组中(字符也只是数字),但这将是非常令人困惑的代码。因此使用一个额外的int
变量。
另请注意,在 Java 中,您应该说char
s,而不是Char
s。原因是还有一个类名Character
也代表单个字符,但作为对象而不是原始类型。因此,当你说的时候Char
,不清楚你的意思是char
不是Character
。
如果 j[1] 是char
(原语,而不是 object Character
)的数组,那么你不能不调用 equals 方法,就像你不能调用1.equals("A")
.
因此,这将起作用(使用对象)
char[] array = new char[] { 'a', 'b', 'c' };
boolean equals = array[0].equals('a'); // Cannot invoke equals(char) on
// the primitive type char
Character.valueOf('a').equals(Character.valueOf(array[0])); //This works
或者这个,使用原语:
char[] array = new char[] { 'a', 'b', 'c' };
boolean anotherEquals = array[0] == 'a'; // This works