2017-09-30 8 views
0

ユーザーに名前を入力させようとしていて、その名前をファイルの名前と比較しようとしています。今のところ、テスト目的で2番目のオブジェクトに固定名を使用しました。スキャナを介して2番目のオブジェクトと正確に一致する最初のオブジェクトの値を入力すると、falseを返し、myのelse文を出力します。次のコードに示すように、固定値で動作しますが、スキャナの入力をコメント解除して "K"と "A"を入力した場合は動作しません。2つのオブジェクト属性を比較するときのスキャナの入力

Scanner input = new Scanner(System.in); 
    Member mem1 = new Member("K", "A"); 
    Member mem2 = new Member("K", "A", "--address--", "--email--", "Math", 123);  

    // System.out.println("Enter a first name: "); 
    // mem1.setMemberFirstName(input.nextLine()); 
    // System.out.println("Enter a last name: "); 
    // mem1.setMemberLastName(input.nextLine()); 

    System.out.println("do these objects match?: " + mem1.equals(mem2)); 

    if (mem1.equals(mem2)) { 
     System.out.println(mem2.toString()); 
    } else 
     System.out.println("No person of this name found"); 
+0

メンバークラスは何ですか?コメントを付けられていないオブジェクトが等しい場合、あなたは 'equals'をオーバーロードしているように見えます。そのクラス定義を表示します。 – Carcigenicate

+0

'equals'メソッドの実装を追加できますか? –

答えて

0

ありがとうございました。私はちょうど自分自身、ルーキーミスを考え出した。私はもともと私のイコールとして、これは上書き持っていた:私は見ることができ、今

public boolean equals(Object obj) { 
    if (!(obj instanceof Member)) 
     return false; 
    Member mem1 = (Member) obj; 
    return (memberFirstName == mem1.memberFirstName) && (memberLastName == mem1.memberLastName); 
} 

がエラーである、とmemberFirstNameとmemberLastNameの両方で.equalsに「==」に変更されました。今問題はありません。

関連する問題