意外的getter行为

时间:2018-02-20 18:11:03

标签: java

我的某个课程的挑战作业有点问题。此代码应该按联系人的名称列出数组列表中包含的所有联系人。我创建了一个子类Contact,其中包含联系人的号码和号码。

我遇到的问题是输出联系人的姓名。而不是预期的"联系号码"其次是名字,我只得到号码。该类的另一个getter工作,如果我在for循环中将.getName()更改为.getNumber(),它将具有"联系人号码的预期输出"然后是存储在联系人中的实际号码。

 private void storeContact() {
    Contact contact = new Contact();
    System.out.println("Please enter a contact name.");
    contact.setName(scanner.nextLine());
    scanner.next();
    System.out.println("Please enter the phone number for the contact");
    contact.setNumber(scanner.nextLong());
    contacts.add(contact);
}
private void listAllContact(){
   if(contacts.size() != 0) {
        for (int i = 0; i < contacts.size(); i++) {
            System.out.println((i + 1) + contacts.get(i).getName());
        }
    }else{
        System.out.println("Contact book is empty.");
    }
}

联系班级:

class Contact{
    private long number;
    private String name;

    public long getNumber() {
        return number;
    }

    public void setNumber(long number) {
        this.number = number;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

2 个答案:

答案 0 :(得分:4)

由于您没有提供完整的示例,我试图推断它

static List<Contact> contacts = new ArrayList<>();

public static void main(String[] args) {
    Contact contact = new Contact();
    contact.setNumber(-17);
    contact.setName("contact name");
    contacts.add(contact);
    listAllContact();
}

private static void listAllContact() {
    if (contacts.size() != 0) {
        for (int i = 0; i < contacts.size(); i++) {
            System.out.println((i + 1) + contacts.get(i).getName());
        }
    } else {
        System.out.println("Contact book is empty.");
    }
}

static class Contact {
    private long number;
    private String name;

    public long getNumber() {
        return number;
    }

    public void setNumber(long number) {
        this.number = number;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

输出符合预期

  

1联系人姓名

答案 1 :(得分:0)

您提供的代码似乎没问。

问题应该是您设置姓名和电话号码时。

如果您提供,我们可以搜索问题。