比较两个char值的内容

时间:2017-06-10 21:38:43

标签: java

我试图比较两个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;
   }

3 个答案:

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

,该循环出现了更多错误:

  1. 您需要在找到角色时终止循环,

  2. 您应该从设置为answer的{​​{1}}和

  3. 开始
  4. 只要你有一个数组,你也可以使用-1而不是length String

  5. 所以:

    length()

答案 1 :(得分:3)

Char是一种原始类型。它没有可以调用的方法。要比较基本类型(charintbooleanfloatdouble等),您应该使用==

.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;
       }

我希望这会有所帮助。