我正在尝试将我的char数组中的索引与字符串进行比较,我正在使用.equals方法,但我遇到了错误。有什么帮助吗?
if (j[1].equals("A"))
{j[1] = 10;}
我一直收到这个错误:
int cannot be dereferenced
else if (j[1].equals("A"))
答案 0 :(得分:3)
请改为尝试:
if (j[1] == 'A')
如果j
数组包含char
s,则必须将其值与另一个char
进行比较,而不是String
(即使字符串长度为1) - 它们是不同的数据类型。因为char
是基本类型,==
用于相等比较。
答案 1 :(得分:2)
为了比较单个字符,您需要使用==
运算符,因为char
是基本类型,而Java不允许在基本类型上调用方法。此外,您无法直接与字符串进行比较,您需要与char
进行比较。类型char
的常量用单引号编写,而不是双引号,表示字符串常量。
因此您的代码将是:
if (j[1] == 'A')
然后,您应该使用另一个变量来存储值10
。虽然理论上你可以将它存储在数组中(字符也只是数字),但这将是非常混乱的代码。因此,请使用额外的int
变量。
另请注意,在Java中,您应该说char
s,而不是Char
s。原因是还有一个类名Character
,它也表示单个字符,但是作为对象而不是基本类型。因此,当您说Char
时,您不清楚char
Character
是否{{1}}。
答案 2 :(得分:0)
如果j [1]是char
(原语,而不是对象Character
)的数组,那么就不能在其上调用equals方法,就像你不能调用{{1}一样}。
所以,这将改为(使用对象)
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