Java 将两个对象相互连接
我有这四门课。 我想做的是通过使用customerID向“User”添加一个“Liftcard”。这是我目前得到的,但似乎不起作用。我很确定问题出在window类中的public void regLiftCard()方法中。有人知道我该怎么做吗? (即时通讯使用arraylist) 用户类别:Java 将两个对象相互连接,java,arraylist,Java,Arraylist,我有这四门课。 我想做的是通过使用customerID向“User”添加一个“Liftcard”。这是我目前得到的,但似乎不起作用。我很确定问题出在window类中的public void regLiftCard()方法中。有人知道我该怎么做吗? (即时通讯使用arraylist) 用户类别: public class User implements Serializable { private String surename, firstName, gender, age; private i
public class User implements Serializable {
private String surename, firstName, gender, age;
private int customerID;
public LiftCard liftCard;
User next;
同一级别:
public LiftCard getLiftCard(){
return liftCard;
}
public void setLiftCard(LiftCard liftC){
liftCard = liftC;
}
窗口类:
public void regLiftCard()
{
int cardtype = Integer.parseInt(cardTypeField.getText());
int customerID = Integer.parseInt(findCustomerField.getText());
if(cardtype == 1 || cardtype == 2 || cardtype == 3 || customerID != 0)
{
//JOptionPane.showMessageDialog(this, "Du må fylle inn hvilket kort du skal ha 1/2/3");
try
{
User uu = userA.findById(customerID);
if (uu != null) {
if (uu.getLiftCard() != null) {
JOptionPane.showMessageDialog(this, "Kunden har allerede kort");
}
}
String fornavn = firstNameField.getText();
String etternavn = surenameField.getText();
String alder = ageField.getText();
String kjonn = genderField.getText();
LiftCard c = new LiftCard(cardNumber, cardtype);
if (userA.findByCardNumber(cardNumber) == null) {
uu.setLiftCard(c);
} else {
uu = new User(customerID, fornavn, etternavn, alder, kjonn);
}
JOptionPane.showMessageDialog(this, "Nytt kort/kunde er registrert");
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(this, "Feil i nummerformat!");
}
}
}
用户存档类:
public void regLiftCard(User u) {
list.add(u);
}
电梯卡等级:
private int cardNumber, cardType;
public LiftCard(int cN, int cT)
{
cardNumber = cN;
cardType = cT;
}
public int getCardNumber(){
return cardNumber;
}
public int getcardType(){
return cardType;
}
public String toString()
{
return cardNumber + "\t" + cardType;
}
}我想您正在尝试向唯一的用户注册一张卡,所以在regListCard上: 您正在寻找一个用户。 如果用户不为null,则查找其卡。 如果该卡不为空,则表示该用户已拥有一张卡。 然后,您将获得有关用户和卡的所有属性输入。 然后,创建一张卡片。 然后,搜索具有该卡的用户,并将之前创建的卡设置为该用户。 但是,有一种可能性,你分配这张卡的用户可能是空的,因为你正在通过它的卡寻找一个用户,如果它是空的,你将这张卡分配给他,如果他是空的,这是不可能的,似乎这就是问题所在。 然后,如果没有使用此卡的用户,您将实例化一个新用户,但不分配任何卡 那么,把这个:
else {
uu = new User(customerID, fornavn, etternavn, alder, kjonn);
uu.setLiftCard(c);
}
在此之后:
if (uu != null) {
if (uu.getLiftCard() != null) {
JOptionPane.showMessageDialog(this, "Kunden har allerede kort");
}
并在“if”之前获取输入。请尝试并告诉我们它是如何工作的,如果我不理解您的代码,请道歉。定义“不工作”。到目前为止,它只是一个对预期或实际行为没有任何解释的代码转储。无关,但考虑与格式化、括号放置等一致。考虑制作<代码>升降机卡>代码>字段>代码>私有< /代码>和<代码>最终<代码>,并将其设置在<代码>用户< /代码>类的构造函数中。对不起,在这一点上我真的很新。当我调用regLiftCard时,我想要做的是将新卡分配给用户。所以,如果我打印我的customerlist,它会这样说:customerID有LiftcardID。我很难解释,对不起。@如果我这么做了,我在添加新用户时不一定要注册一张卡吗?这取决于你在创建
用户时是否知道用户可以注册什么卡。你可以给用户
一张null
卡。我想你马上就解决了我的问题。所以我尝试了你说的,但是用户卡号仍然是空的。哦,我看不出你在哪里初始化卡号,它是一个窗口类字段吗?检查您是否给它一个不是0或其他值。无论如何,我忘了告诉你,当你创建新用户时,你还必须设置卡,因此生成的代码将是:else{uu=new User(customerID,fornavn,etternavn,alder,kjonn);uu.setLiftCard(c);}我真的很感谢你的帮助,有些事情成功了,我做到了这一点:JOptionPane.showMessageDialog(这个,“Nytt kort/kunde er registerert”);但用户上仍然没有卡(cardNumber仍然为空,cardType为空)。这可能与我的setLiftCard()有关方法,或者我做了一些完全错误的事情,这也很可能。愚蠢的问题,但得到了任何其他输入?是的,cardNumber设置为0。不,setLiftCard()似乎没有问题。在运行setLiftCard(c)之前,您是否初始化了卡?嗯。在用户类中,我有公共LiftCard LiftCard;在构造函数中,我有LiftCard=null;