2017-09-30 2 views
0

Je tente d'obtenir qu'un utilisateur entre un nom, puis le compare à un nom de fichier. Pour l'instant, je viens d'utiliser un nom fixe pour mon second objet à des fins de test. Lorsque j'entre des valeurs pour le premier objet qui correspondent exactement au second objet via le scanner, il renvoie false et imprime mon instruction else. Il fonctionne avec des valeurs fixes comme indiqué dans le code suivant, mais pas lorsque je décommente les entrées du scanner et entre "K" et "A".Entrée du scanner lors de la comparaison de deux attributs d'objet

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

Quelle est votre classe de membre? Vous semblez avoir outrepassé 'equals' si les objets non commentés sont égaux. Montrer cette définition de classe. – Carcigenicate

+0

pouvez-vous ajouter l'implémentation de la méthode 'equals'? –

Répondre

0

Merci pour les réponses rapides. Je l'ai juste compris moi-même, erreur de débutant. J'ai eu à l'origine ce que mes égaux passer outre:

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

que je peux maintenant voir est une erreur, et ont changé le « == » à .equals dans les deux memberFirstName et memberLastName. Aucun problème maintenant.