Java String For循环不读取if语句

时间:2013-01-10 21:03:31

标签: java loops if-statement

我想知道为什么这不起作用?我已经看了一会儿,想知道为什么它不起作用。它似乎没有读取if语句。即使你输入了像“A5”这样的合法字符串,一切看起来也都适合我。

    System.out.println("PLEASE TYPE IN A COORDINATE, LETTER FIRST, THEN NUMBER.");
    System.out.println();
    System.out.print("CAPITALS ONLY, PLEASE. ENTER COORDINATE HERE: ");

    String placement = scan.next();
    String letter = placement.substring(0,1);
    String number = placement.substring(1);

    System.out.println(letter);
    //System.out.println(placement);
    System.out.println(number);

    String cord[] = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J"};

    for(int s = 0; s < cord.length; s++)
    {
        //System.out.println(cord[s]);
        if(cord[s] == letter)
        {
            System.out.print("yay, it worked");
        }
    }

2 个答案:

答案 0 :(得分:7)

常见错误:String/Object比较应使用equals()而不是==(字符串文字比较除外)。

if(cord[s] == letter)

应该是

if(letter.equals(cords[s]))

equals()比较对象内容的相等性。 ==比较参考相等。

答案 1 :(得分:1)

letterString个对象。在您的循环中,cord[s]也是String对象。但它们是两个不同的对象。

编写letter == cord[s]不会比较值,它会比较引用。您需要使用.equals()来比较值,即写letter.equals(cord[s])

请参阅对象上的javadoc,特别是.equals() / .hashCode()