将数组索引与字符串进行比较?

3

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

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

我一直遇到这个错误:
int cannot be dereferenced
else if (j[1].equals("A"))

char 是一种原始数据类型,而不是对象。 - mre
你有一个字符或字符串数组吗? - Mike
使用.equals来比较字符串与其他字符串。j[1]不是一个字符串。 - aug
我有一个混合了数字和字母A到F的Char数组。我想要做的是,如果Char等于A,则将值10分配给一个新变量或数组中相同索引,以便更容易实现。 - user1861156
3个回答

3
尝试使用这个替代方案:
if (j[1] == 'A')

如果 j 数组包含 char,则必须将其值与另一个 char 进行比较,而不是 String(即使字符串长度为1)-它们是不同的数据类型。由于 char 是一种原始类型,因此用 == 进行相等性比较。


谢谢,那个完美地解决了问题。下次我会注意数据类型,希望这不是我再犯的一个错误! - user1861156
@user1861156 不客气!请不要忘记通过点击其左侧的复选标记接受对您最有帮助的答案。 - Óscar López

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

因此,您的代码应该是:

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

接下来,您应该使用另一个变量来存储值10。虽然理论上可以将其存储在数组中(字符也只是数字),但这会导致非常混乱的代码。因此,请使用附加的int变量。

此外请注意,在Java中,应该使用char而不是Char。原因是还有一个类名为Character,它也表示单个字符,但作为对象而不是基本类型。因此,当您说Char时,不清楚您是否指charCharacter


这个解释帮了很多!谢谢,我会记住的! - user1861156

0

如果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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接