2017-11-04 11 views
-4

ユーザーが名前を推測しようとするミニゲームの場合。しかし、私は2つのテキスト文字列を比較して、同じものかどうかをチェックしたいときにはうまくいかないようです。Javaで文字列(およびオブジェクト)を正しく比較するには?

final String miName = "Jhon"; 
    Scanner input = new Scanner(System.in); 
    System.out.println("Guess my name: "); 

    while (true) { 
    String attempt = input.next(); 
    if(attempt == miName) { 
     System.out.println("Congrats!"); 
     break; 
    } else { 
     System.out.println("Try it again!"); 
    } 
    } 

出力:

Guess my name:: 
Karl 
Try it again! 
jhon 
Try it again! 
Jhon 
Try it again! 

答えて

0

あなたはStringの場合に.equalsを使用する必要があります。

==は、オブジェクトのアドレスが一致する場合(またはプリミティブ型の場合)のみ、trueとなります。 Objectクラスは、.equalsメソッドのアドレスを本質的に比較し、2つのオブジェクトの等価性について独自のカスタムロジックを作成する場合は、.equalsメソッドをオーバーライドする必要があります。

StringIntegerなどのクラスでは、すでに等しい値がオーバーライドされています。