我试图将字符数组中的索引与字符串进行比较,我使用了.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
,则必须将其值与另一个 char
进行比较,而不是 String
(即使字符串长度为1)-它们是不同的数据类型。由于 char
是一种原始类型,因此用 ==
进行相等性比较。
==
运算符,因为char
是一种原始类型,Java不允许在原始类型上调用方法。此外,您不能直接与字符串进行比较,您需要与char
进行比较。类型为char
的常量使用单引号而不是双引号表示字符串常量。
因此,您的代码应该是:
if (j[1] == 'A')
接下来,您应该使用另一个变量来存储值10
。虽然理论上可以将其存储在数组中(字符也只是数字),但这会导致非常混乱的代码。因此,请使用附加的int
变量。
此外请注意,在Java中,应该使用char
而不是Char
。原因是还有一个类名为Character
,它也表示单个字符,但作为对象而不是基本类型。因此,当您说Char
时,不清楚您是否指char
或Character
。
如果j[1]是一个char的数组(原始类型,而不是对象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
char
是一种原始数据类型,而不是对象。 - mre.equals
来比较字符串与其他字符串。j[1]
不是一个字符串。 - aug