为什么在这个例子中“T”不等于“T”?

时间:2014-02-21 10:20:51

标签: java substring

我正在尝试用Java为我的大学课写一个简单的刽子手游戏。由于某种原因,if语句永远不会返回似乎认为被比较的两个子串是相等的。两份印刷声明表明,两者应该等同于所有权利。

public String guessLetter(String letter)
{
    String blanks = "";
            String theWord="FOO";
    for(int i=0; i<=theWord.length()-1; i++)
    {
        System.out.print(letter.substring(0,1).toUpperCase());
        System.out.print(theWord.substring(i,i+1)+ "\n");

        if((letter.substring(0,1).toUpperCase())==(theWord.substring(i,i+1)))
        {
            blanks = blanks + theWord.substring(i,i+1);
        }
        else
        {
            blanks = blanks + "___  ";
        }           
    }
    return blanks;
}

编辑 - 正如许多人所指出的,在比较字符串时,必须使用equals方法而不是==。我没有意识到。

3 个答案:

答案 0 :(得分:2)

您正在比较字符串,因此请使用"String".equals()不要使用==

像这样使用:

if((letter.substring(0,1).toUpperCase()).equals(theWord.substring(i,i+1)))

答案 1 :(得分:1)

if((letter.substring(0,1).toUpperCase())==(theWord.substring(i,i+1))) \这对字符串来说是错误的

比较字符串时,您应使用.equals.equalsIgnorecase

if((letter.substring(0,1).toUpperCase()).equals(theWord.substring(i,i+1)))

ans也检查difference between == and .equals in java在那里给出了很好的解释。

答案 2 :(得分:1)

对于字符串,Java没有== 您必须使用string1.equals(string2)功能