在java中将字符更改为字符串

时间:2017-05-23 21:40:07

标签: java string char contains

在这个方法中,在if(this.guessedLetters.contains(buildWord))使用String buildWord,当我用主文件运行testProgram时,我得到的结果不正确,但是当我手动使用if(this.guessedLetters.contains("" + letter))时,它可以工作。我的问题是这里有什么区别?为什么这两个不一样:if(this.guessedLetters.contains(buildWord))if(this.guessedLetters.contains("" + letter))

public String hiddenWord() {
    char letter = ' ';
    String hiddenWord = "";
    String buildWord = "" + letter;
    int i = 0;
    while (i < this.word.length()) {
        letter = this.word.charAt(i);
        if (this.guessedLetters.contains(buildWord))  { // **********
            hiddenWord += letter;
        } else  {
            hiddenWord += '_';
        }
        i++;
    }
    return hiddenWord;
}

2 个答案:

答案 0 :(得分:2)

不同之处在于letter在循环中得到更新,但buildWord并不总是等于字符串" "。如果您在重新分配buildWord = "" + letter;后添加letter,那么它将起作用:

while (i < this.word.length()) {
    letter = this.word.charAt(i);
    buildWord = "" + letter;           // <------------
    if (this.guessedLetters.contains(buildWord))

有关将字符转换为字符串的不同方法的详细信息,请参阅How to convert a char to a String?

答案 1 :(得分:0)

差异是String.contains(CharSequence s)方法只将CharSequence作为参数。 CharSequence是一个接口,所有已知的实现类都是:

  

CharBuffer,Segment,String,StringBuffer,StringBuilder

您可以将上述类中的任何一个作为参数传递,但不能直接传递 char ,这就是为什么当您尝试转换字母(char)时作为 buildWord (字符串),接受,因为它是CharSequence的实现类。

进一步参考CharSequence java documentationString java documentation