問題

ドライバとGUIフレームクラスの2つのクラスを作成しました。ドライバクラスでは、ユーザーオブジェクトのarrayListを配置します。しかし、GUIフレームクラスからメソッドを呼び出すと、返される値は0になります。

私は各ループを使って各オブジェクトを暗黙的に比較しようとしました。

これは、一時的なユーザーのオブジェクトを既存のユーザーと比較するために使用している方法です。

 public boolean confirm(boolean loggedIn, int tempStudentNo, int tempPin) {

    //Creation of temporary object for comparison with existing one
    DriverMain temp = new DriverMain(tempStudentNo, tempPin);

    if (getCreation().contains(temp)) {
        System.out.println("user pass");
        setLoggedIn(true);
    } 

    else {
        System.out.println("user fail");
    }
    return loggedIn;

} 
 

私はユーザーが渡すことを期待しています。しかし、結果は常に "ユーザーが失敗する"です。 どんな助けもありがとう:)

  ベストアンサー

この答えは、コメントに対するあなたの応答に基づいています: "あなたのDriverMainクラスは、equalsメソッドをオーバーライドしますか?..."

(Array)List、HashTable、HashSet、HashMapなどのいずれかを使用するには、DriverMainクラスの「カップル」メソッドをオーバーライドする必要があります。 List、Setなど、およびその他のコレクション型またはMap/HashTableでは、オブジェクトがコンテンツのメンバーであるかどうかを評価するには、渡すオブジェクトと現在保持しているオブジェクトを比較する方法を提供する必要があります。

リスト
または contains(Object o)メソッドは、オブジェクトのequals(Object o)メソッドを使用して、オブジェクトoを任意のオブジェクトx(リストコレクションのメンバ)と比較します。

これに関する詳細は、次のリンクを参照してください。 https://docs.oracle.com/javase/tutorial/java/IandI/objectclass.html https://docs.oracle.com/javase/tutorial/collections/interfaces/list.html }

セット
または contains(Object o) メソッドは、オブジェクトの hashCode() メソッドと equals(Object o) メソッドを使用して、オブジェクト o を任意のオブジェクト x (セットコレクションのメンバ)。

これに関する詳細は、次のリンクを参照してください。 https://docs.oracle.com/javase/tutorial/java/IandI/objectclass.html https://docs.oracle.com/javase/tutorial/collections/interfaces/set.html

マップ
または containsKey(Object o)メソッドは、オブジェクトのhashCode()equals(Object o)メソッドを使用して、オブジェクトoを任意のオブジェクトx(マップインタフェースのメンバ)と比較します。

これに関する詳細は、次のリンクを参照してください。 https://docs.oracle.com/javase/tutorial/java/IandI/objectclass.html https://docs.oracle.com/javase/tutorial/collections/interfaces/map.html

重要な注意 そのような状況には、その実装に応じてさらにアプローチする方法があります。たとえば、TreeSetTreeMaphashCode()メソッドを使用しません。

  同じタグがついた質問を見る

javaequals