2011-10-18 11 views
0

私はばかだよ:文字列を含む変数は、 '同じ'文字列でテストに失敗します。どうして?

私のコードは以下のコードです。私はコードを実行し、私の答えとして4を入力します。しかし、その答えは間違っています。私は何を間違えたのですか?助けてくれてありがとう。

import java.io.*; 

class class1 { 

    public static void main (String[] args) throws IOException { 
    BufferedReader input = new BufferedReader (new InputStreamReader(System.in)); 
    System.out.println("What is the answer to 2 + 2"); 
    String answer; 

    answer = input.readLine(); 

    if (answer == "4"){ 
     System.out.println("Correct"); 
    } else System.out.println("Incorrect"); 

    } 
    } 
} 
+2

しないでくださいをしたい場合accを忘れるept an answer:) – jeff

答えて

7

==を使用して文字列を比較することはできません。あなたはこのようにそれを実行する必要があります。

answer.equals("4"); 

両側がまったく同じオブジェクト(同じインスタンス)であれば==にのみ動作するための理由があります。本当に必要なのは、両方の文字列の内容が同じかどうかを確認することです。

具体例では、answer"4"と同じオブジェクトを指しているかどうかを比較しています。

その他の技術的な詳細:http://leepoint.net/notes-java/data/expressions/22compareobjects.html

+0

ありがとうございました! – Mot39

0

あなたがして

if (answer == "4") 

を交換する必要があります。

if (answer.equals("4")) 
1

それとも、数値の比較

if(Integer.valueOf(answer) == 4) 
関連する問題