繁体   English   中英

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

[英]changing a character to string in java

在这种方法中,当我使用主文件运行testProgram时,在if(this.guessedLetters.contains(buildWord))使用字符串buildWord时,会得到不正确的结果,但是当我手动使用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;
}

区别在于letter在循环中得到更新,但是buildWord并不并且始终等于字符串" " 如果添加buildWord = "" + letter; 重新分配letter后,它将起作用:

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

有关将字符转换为字符串的不同方式的更多信息,请参见如何将字符转换为字符串?

区别在于String.contains(CharSequence s)方法将仅使用CharSequence作为参数。 CharSequence是一个接口,所有已知的实现类是:

CharBuffer,Segment,String,StringBuffer,StringBuilder

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

有关更多参考,请参见CharSequence Java文档String Java文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM