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