Java 将两个对象相互连接

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

我有这四门课。 我想做的是通过使用customerID向“User”添加一个“Liftcard”。这是我目前得到的,但似乎不起作用。我很确定问题出在window类中的public void regLiftCard()方法中。有人知道我该怎么做吗? (即时通讯使用arraylist)

用户类别:

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;