我有四个班。 我要做的是通过使用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;
}
}
答案 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”之前获取输入。试一试,告诉我们它是如何工作的,如果我不理解您的代码,请对不起。