请帮我自我引用指针

时间:2012-11-17 21:44:41

标签: java pointers parameters parameter-passing bluej

我先写了两个班,一个是会员,第二个是商店。我写了一个方法,可以从成员类创建一个对象,我试图在Member类中编写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;
}

3 个答案:

答案 0 :(得分: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();
}

希望有所帮助。顺便说一句,以符合您代码的方式更新评论。

答案 1 :(得分:1)

使用关键字this是您能够获得自引用指针的方法。您应该能够在return new Member(name, id, pinNumber, this)方法中以@Kerrek SB建议和memberRegister进行操作。

答案 2 :(得分:0)

在您的情况下,请将this关键字传递给方法memberRegister useless

returning this关键字为useful

详细了解此关键字check this