我试图比较两个char值的内容,但我得到了:"无法在原始类型char"上调用equals(char)。错误。我知道问题在第5行,但我不知道如何克服这个问题,任何想法?
public static int charPosition(String word, char letter){
int answer=0, x;
char [] charArray = word.toCharArray();
for( x=0; x< word.length(); x++){
if(charArray[x].equals(letter)){ answer =x;}
else{ answer= -1;}
}
return answer;
}
答案 0 :(得分:4)
比较char
时,您使用的是==
,而不是.equals
。后者用于比较对象(如String
s),而不是像char
这样的基元。
所以:
public static int charPosition(String word, char letter) {
int answer = 0, x;
char[] charArray = word.toCharArray();
for (x = 0; x < word.length(); x++) {
if (charArray[x] == letter) { // <−−−−−− Change is here
answer = x;
} else {
answer = -1;
}
}
return answer;
}
但,该循环出现了更多错误:
您需要在找到角色时终止循环,
您应该从设置为answer
的{{1}}和
只要你有一个数组,你也可以使用-1
而不是length
String
:
所以:
length()
答案 1 :(得分:3)
Char是一种原始类型。它没有可以调用的方法。要比较基本类型(char
,int
,boolean
,float
,double
等),您应该使用==
。
.equals
是来自Object类的方法。文档说:
equals(Object obj) : boolean
指示某个其他对象是否“等于”此对象。
比较字符串时,您应该使用.equals
,因为类String继承自Object。
答案 2 :(得分:1)
您必须使用==运算符来比较字符或基本数据类型。 Equals方法用于对象和字符串比较。
public static int charPosition(String word, char letter){
int answer=0, x;
char [] charArray = word.toCharArray();
for( x=0; x< word.length(); x++){
if(charArray[x]==letter){ answer =x; break;}
else{ answer= -1;}
}
return answer;
}
我希望这会有所帮助。