将两个物体相互连接

时间:2013-04-09 14:08:35

标签: java arraylist

我有四个班。 我要做的是通过使用customerID向“用户”添加“Liftcard”。这是我到目前为止所得到的,但它似乎没有用。我很确定问题出在窗口类的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!");
        }
      }
    }

UserArchive类:

    public void regLiftCard(User u) {
    list.add(u);
}

Liftcard类:

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;
}

}

1 个答案:

答案 0 :(得分:0)

我想您正在尝试将卡注册到唯一的用户,所以在regListCard上:

您正在寻找用户。 如果用户不为空,则查找它的卡。 如果该卡不为空,则表示该用户已有卡。 然后,您将获得有关用户和卡的所有属性输入。 然后,您创建一张卡片。 然后,搜索具有此卡的用户,并将之前创建的卡设置为该用户。 但是,您分配此卡的用户可能会为空,因为您正在通过它的卡寻找用户,如果它是空的,您将此卡分配给他,如果他为空则不可能,并且似乎这就是问题所在。 然后,如果没有此卡的用户,则表示您正在实例化新用户,但不会分配任何卡。

所以,把这个:

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”之前获取输入。试一试,告诉我们它是如何工作的,如果我不理解您的代码,请对不起。