1

我有这四门课。我要做的是使用 customerID 将“Liftcard”添加到“用户”。这是我到目前为止得到的,但它似乎不起作用。我很确定问题出在窗口类中的公共 void regLiftCard() 方法中。有人知道我应该怎么做吗?(我使用数组列表)

用户等级:

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

}

4

1 回答 1

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”之前获取输入。试试看,告诉我们它是如何工作的,如果我不理解你的代码,我很抱歉。

于 2013-04-09T14:34:00.087 回答