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

letterStringオブジェクトです。あなたのループでcord[s]は、オブジェクトでもありStringます。しかし、それらは 2 つの異なるオブジェクトです。

書き込みletter == cord[s]は値を比較するのではなく、参照を比較します。.equals()値を比較するには、 writeを使用する必要がありますletter.equals(cord[s])

Object の javadoc、特に.equals()/を参照してください.hashCode()

于 2013-01-10T21:06:10.983 に答える