0

我想知道为什么这不起作用?我一直在看它一段时间,想知道为什么它不起作用。它似乎没有阅读 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");
        }
    }
4

2 回答 2

7

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

if(cord[s] == letter)

应该

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

equals()比较对象内容的相等性。==比较引用相等性。

于 2013-01-10T21:04:16.130 回答
1

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

写作letter == cord[s]不比较值,它比较引用。您需要用于.equals()比较值,即 write letter.equals(cord[s])

请参阅有关 Object 的 javadoc,尤其是.equals()/ .hashCode()

于 2013-01-10T21:06:10.983 回答