2

私は2つのクラスを最初に1つのメンバーと2番目のストアを作成しました。メンバー クラスからオブジェクトを作成できるメソッドを作成し、メンバー クラスに Store 型のフィールド ストアを作成しようとしています。メンバーが入力したストアへの参照を保存したいと考えています。これを行うように言われた人もいます: memberRegister() は、引数として、現在いる Store オブジェクトへのポインターを渡す必要があります。

実際、Store オブジェクトは、Member オブジェクトに「自分を指している」ことを伝えることができる必要があります。つまり、Store オブジェクトにはそれ自体へのポインターが必要です。しかし、私はそれを取得しませんでした

これはメンバークラスです

private int pinNumber;
private String name, id; 
private Store store;


/**
 * Constructor for objects of class Member
 */
public Member(String name, String id, int pinNumber, Store store)

{
    // initialise instance variables
    this.name = name;
    this.id = id;
    this.pinNumber = pinNumber;
    checkId();
    checkPinNumber();
}

/**
 * An example of a method - replace this comment with your own
 * 
 * @param  y   a sample parameter for a method
 * @return     the sum of x and y 
 */
private void checkId()
{
    // put your code here
    int length; 
     length = id.length();
    if (length > 10 ){
        System.out.println("lentgh must be at 10 ");
    }
}
private void checkPinNumber()
{
    int length; 
     length = id.length();
    if ((length > 4) && (length < 4 )){
        System.out.println("lentgh must be at 4"); 
}

クラスストア

   private String storeName;
private int total; 
private  Member member;


/**
 * Constructor for objects of class Store
 */
public Store(String storeName, int total)
{
    // initialise instance variables
    this.storeName = storeName;
    this.total = total;
}

/**
 * 
 */
public String getStoreName() 
{
return storeName;
}

/**
 * An example of a method - replace this comment with your own
 * 
 * @param  y   a sample parameter for a method
 * @return     the sum of x and y 
 */
public Member memberRegister(String name, String id, int pinNumber)
{
    // put your code here
   Member member;
   member = new Member(name, id, pinNumber)
   return member;
}
4

3 に答える 3

1

memberRegister メソッドが Member コンストラクターを正しく呼び出していません。

public Member memberRegister(String name, String id, int pinNumber)
{
    // put your code here
   Member member;
   member = new Member(name, id, pinNumber, this) //this passes in a reference to your store
   return member;
}

次に、Member コンストラクターで参照を割り当てます。

public Member(String name, String id, int pinNumber, Store store)

{
    // initialise instance variables
    this.name = name;
    this.id = id;
    this.store = store //where this.store is a Store
    this.pinNumber = pinNumber;
    checkId();
    checkPinNumber();
}

それが役立つことを願っています。ところで、コードと一致するようにコメントを更新してください。

于 2012-11-17T21:58:57.947 に答える
1

キーワードを使用するthisと、自己参照ポインターを取得できます。@Kerrek SB が提案したように、メソッドreturn new Member(name, id, pinNumber, this)内から実行できるはずです。memberRegister

于 2012-11-17T22:00:55.947 に答える
0

あなたの場合、thisキーワードをメソッドにmemberRegister渡すことを確認してくださいuseless

returning thisキーワードはuseful

このキーワードの詳細については、これを確認してください

于 2012-11-17T21:59:38.357 に答える