3

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

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

我不断收到此错误:

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

3 回答 3

3

试试这个:

if (j[1] == 'A')

如果j数组包含chars,那么您必须将其值与另一个比较char,而不是 a String(即使字符串的长度为 1) - 它们是不同的数据类型。并且因为 achar是原始类型,==所以用于相等比较。

于 2013-01-24T18:53:47.153 回答
2

为了比较单个字符,您需要使用==运算符,因为char它是原始类型,Java 不允许调用原始类型的方法。此外,您不能直接与字符串进行比较,您需要与char. 类型的常量char用单引号写成,而不是用双引号表示字符串常量。

因此,您的代码将是:

if (j[1] == 'A') 

然后,您应该使用另一个变量来存储该值10。尽管理论上您可以将其存储在数组中(字符也只是数字),但这将是非常令人困惑的代码。因此使用一个额外的int变量。

另请注意,在 Java 中,您应该说chars,而不是Chars。原因是还有一个类名Character也代表单个字符,但作为对象而不是原始类型。因此,当你说的时候Char,不清楚你的意思是char不是Character

于 2013-01-24T18:53:28.760 回答
0

如果 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
于 2013-01-24T18:53:31.267 回答