将数组索引与String进行比较?

时间:2013-01-24 18:51:11

标签: java arrays

我正在尝试将我的char数组中的索引与字符串进行比较,我正在使用.equals方法,但我遇到了错误。有什么帮助吗?

if (j[1].equals("A"))
{j[1] = 10;}

我一直收到这个错误:

int cannot be dereferenced
else if (j[1].equals("A"))

3 个答案:

答案 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