在java中显示联系人列表程序中的联系人

在java中显示联系人列表程序中的联系人,java,Java,我是编程和面向对象设计的新手。这是我完成学士学位(非编程)的最后一个要求。我对如何使面向对象工作有点困惑,我所看到的似乎都没有帮助。任务是创建一个使用继承、多态性和集合的联系人列表。我需要一个联系人列表,其中存储两种类型的联系人:商务和个人。我需要提示1添加联系人,然后要求1提供个人信息或要求2提供业务信息。提示2将允许用户显示所选联系人的输出,提示3将退出 我构建了以下类和子类。我很确定这些类是正确构建的,但是在添加了任何一种类型的联系人之后,当我选择2查看时,我只能看到来自超级类的信息,而不

我是编程和面向对象设计的新手。这是我完成学士学位(非编程)的最后一个要求。我对如何使面向对象工作有点困惑,我所看到的似乎都没有帮助。任务是创建一个使用继承、多态性和集合的联系人列表。我需要一个联系人列表,其中存储两种类型的联系人:商务和个人。我需要提示1添加联系人,然后要求1提供个人信息或要求2提供业务信息。提示2将允许用户显示所选联系人的输出,提示3将退出

我构建了以下类和子类。我很确定这些类是正确构建的,但是在添加了任何一种类型的联系人之后,当我选择2查看时,我只能看到来自超级类的信息,而不能看到子类的信息(即:职务和组织或出生日期)。任何帮助都是很棒的,我只需要完成这一步,然后我将很高兴地把编程留给那些知道自己在做什么的人

我为这篇冗长的帖子道歉,但我想我应该展示所有的东西

这是我的主要课程:

package contactlist;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class ContactList {

/*ArrayList<List.Contact> contactlist;*/

List<Contact> contactlist = new ArrayList<>();


/* Contact contact; */
private int top = 0;

public static void main(String[] args) throws IOException {
    /* Contact contact;
    contact = new Contact();
    List.Contact c;
    c = contact; */
    ContactList list = new ContactList();

    BufferedReader keyIn;
    keyIn = new BufferedReader(new InputStreamReader(System.in));
    String choose = "";
    while (true) {

        System.out.println("\n[1] Add contact");
        System.out.println("[2] View all contacts");
        System.out.println("[3] Quit");
        System.out.print("Choose : ");

        try {
            choose = keyIn.readLine();
        } catch (IOException e) {

            System.out.println("Error");
        }
        switch (choose) {
            case "1":
                list.addContact();
                break;
            case "2":
                list.viewContacts();
                break;
            case "3":
                System.exit(0);
                break;
            default:
                System.out.println("Error");
                break;
         }

       }
    }

public ContactList() {
    this.contactlist = new ArrayList<>();
}

public void addContact() throws IOException {
    BufferedReader keyIn;
    keyIn = new BufferedReader(new InputStreamReader(System.in));
    String firstName;
    String lastName;
    String address;
    String email;
    String phone;
    String jobTitle;
    String organization;
    String dateOfBirth;

    Scanner input = new Scanner(System.in);
    System.out.println("Please enter Specify the contact type (1) Personal
    or (2) Business: ");
    int contactType = input.nextInt();
    if (contactType == 1) {
        System.out.print("First Name: ");
        firstName = keyIn.readLine();
        System.out.print("Last Name: ");
        lastName = keyIn.readLine();
        System.out.print("Address: ");
        address = keyIn.readLine();
        System.out.print("E-mail address: ");
        email = keyIn.readLine();
        System.out.print("Phone number: ");
        phone = keyIn.readLine();
        System.out.print("Date of Birth (MM/DD/YYYY): ");
        dateOfBirth = keyIn.readLine();

        PersonalContact entry;
        entry = new PersonalContact(firstName, lastName, address, email, 
        phone, dateOfBirth);
        contactlist.add(entry);
        top++;
        try {
            entry.write();
        } catch (Exception e) {
        }

    } else if (contactType == 2) {
        System.out.print("First Name: ");
        firstName = keyIn.readLine();
        System.out.print("Last Name: ");
        lastName = keyIn.readLine();
        System.out.print("Address: ");
        address = keyIn.readLine();
        System.out.print("E-mail address: ");
        email = keyIn.readLine();
        System.out.print("Phone number: ");
        phone = keyIn.readLine();
        System.out.print("Job Title: ");
        jobTitle = keyIn.readLine();
        System.out.print("Organization: ");
        organization = keyIn.readLine();

        BusinessContact entry;
        entry = new BusinessContact(firstName, lastName, address, email, 
        phone, jobTitle, organization);
        contactlist.add(entry);
        top++;
        try {
            entry.write();
        } catch (Exception e) {
        }

    }

}

public void viewContacts() {
for (int index = 0; index < top; index++) {
    System.out.println((index + 1) + " First Name " +
    contactlist.get(index).getFirstName());
    System.out.println("Last Name " + contactlist.get(index).getLastName());
    System.out.println("Address: " + contactlist.get(index).getAddress());
    System.out.println("E-mail: " + contactlist.get(index).getEmail());
    System.out.println("Phone: " + contactlist.get(index).getPhone());
    System.out.println("Job Title " + contactlist.get(index).getJobTitle());
    System.out.println("Organization " +  contactlist.get(index).
    getOrganization());
    System.out.println("Date of Birth " + contactlist.get(index).
    getDateOfBirth());
    }
    }
}
业务联系人子类:

package contactlist;

public class BusinessContact extends Contact {

    private String jobTitle;
    private String organization;

    public BusinessContact(String firstName, String lastName, String address, 
    String email, String phone, String jobTitle, String organization) {
        super(firstName, lastName, address, email, phone);
        this.jobTitle = jobTitle;
        this.organization = organization;
    }

    public String getJobTitle() {
        return jobTitle;
    }

    public void setJobTitle(String jobTitle) {
        this.jobTitle = jobTitle;
    }

    public String getOrganization() {
        return organization;
    }

    public void setOrganization(String organization) {
        this.organization = organization;
    }

    void write() {
        throw new UnsupportedOperationException("Not supported yet."); 
        //To change body of generated methods, choose Tools | Templates. 
    }

}
package contactlist;

public class PersonalContact extends Contact {

    private String dateOfBirth;

    public PersonalContact(String firstName, String lastName, String address, 
        String email, String phone, String dateOfBirth) {
        super(firstName, lastName, address, email, phone);
        this.dateOfBirth = dateOfBirth;
    }

    public String getDateOfBirth() {
        return dateOfBirth;
    }

    public void setDateOfBirth(String dateOfBirth) {
        this.dateOfBirth = dateOfBirth;
    }

    void write() {
        throw new UnsupportedOperationException("Not supported yet."); 
        //To change body of generated methods, choose Tools | Templates.
    }
}
个人联系人子类:

package contactlist;

public class BusinessContact extends Contact {

    private String jobTitle;
    private String organization;

    public BusinessContact(String firstName, String lastName, String address, 
    String email, String phone, String jobTitle, String organization) {
        super(firstName, lastName, address, email, phone);
        this.jobTitle = jobTitle;
        this.organization = organization;
    }

    public String getJobTitle() {
        return jobTitle;
    }

    public void setJobTitle(String jobTitle) {
        this.jobTitle = jobTitle;
    }

    public String getOrganization() {
        return organization;
    }

    public void setOrganization(String organization) {
        this.organization = organization;
    }

    void write() {
        throw new UnsupportedOperationException("Not supported yet."); 
        //To change body of generated methods, choose Tools | Templates. 
    }

}
package contactlist;

public class PersonalContact extends Contact {

    private String dateOfBirth;

    public PersonalContact(String firstName, String lastName, String address, 
        String email, String phone, String dateOfBirth) {
        super(firstName, lastName, address, email, phone);
        this.dateOfBirth = dateOfBirth;
    }

    public String getDateOfBirth() {
        return dateOfBirth;
    }

    public void setDateOfBirth(String dateOfBirth) {
        this.dateOfBirth = dateOfBirth;
    }

    void write() {
        throw new UnsupportedOperationException("Not supported yet."); 
        //To change body of generated methods, choose Tools | Templates.
    }
}

首先,基类中不应该有Organization、job title和dob的getter,因为它们是各个派生类的属性。您应该做的是重写viewContacts方法,首先调用super.override,然后显示派生类成员

    package contactlist;

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;

    public class ContactList {

    /*ArrayList<List.Contact> contactlist;*/

    List<Contact> contactlist = new ArrayList<>();


    /* Contact contact; */
    private int top = 0;

    public static void main(String[] args) throws IOException {
        /* Contact contact;
        contact = new Contact();
        List.Contact c;
        c = contact; */
        ContactList list = new ContactList();

        BufferedReader keyIn;
        keyIn = new BufferedReader(new InputStreamReader(System.in));
        String choose = "";
        while (true) {

            System.out.println("\n[1] Add contact");
            System.out.println("[2] View all contacts");
            System.out.println("[3] Quit");
            System.out.print("Choose : ");

            try {
                choose = keyIn.readLine();
            } catch (IOException e) {

                System.out.println("Error");
            }
            switch (choose) {
                case "1":
                    list.addContact();
                    break;
                case "2":
                    list.viewContacts();
                    break;
                case "3":
                    System.exit(0);
                    break;
                default:
                    System.out.println("Error");
                    break;
             }

           }
        }

    public ContactList() {
        this.contactlist = new ArrayList<>();
    }

    public void addContact() throws IOException {
        BufferedReader keyIn;
        keyIn = new BufferedReader(new InputStreamReader(System.in));
        String firstName;
        String lastName;
        String address;
        String email;
        String phone;
        String jobTitle;
        String organization;
        String dateOfBirth;

        Scanner input = new Scanner(System.in);
        System.out.println("Please enter Specify the contact type (1) Personal
        or (2) Business: ");
        int contactType = input.nextInt();
        if (contactType == 1) {
            System.out.print("First Name: ");
            firstName = keyIn.readLine();
            System.out.print("Last Name: ");
            lastName = keyIn.readLine();
            System.out.print("Address: ");
            address = keyIn.readLine();
            System.out.print("E-mail address: ");
            email = keyIn.readLine();
            System.out.print("Phone number: ");
            phone = keyIn.readLine();
            System.out.print("Date of Birth (MM/DD/YYYY): ");
            dateOfBirth = keyIn.readLine();

            PersonalContact entry;
            entry = new PersonalContact(firstName, lastName, address, email, 
            phone, dateOfBirth);
            contactlist.add(entry);
            top++;
            try {
                entry.write();
            } catch (Exception e) {
            }

        } else if (contactType == 2) {
            System.out.print("First Name: ");
            firstName = keyIn.readLine();
            System.out.print("Last Name: ");
            lastName = keyIn.readLine();
            System.out.print("Address: ");
            address = keyIn.readLine();
            System.out.print("E-mail address: ");
            email = keyIn.readLine();
            System.out.print("Phone number: ");
            phone = keyIn.readLine();
            System.out.print("Job Title: ");
            jobTitle = keyIn.readLine();
            System.out.print("Organization: ");
            organization = keyIn.readLine();

            BusinessContact entry;
            entry = new BusinessContact(firstName, lastName, address, email, 
            phone, jobTitle, organization);
            contactlist.add(entry);
            top++;
            try {
                entry.write();
            } catch (Exception e) {
            }

        }

    }

    public void view() {
    for (int index = 0; index < top; index++) {
        contactlist.get(index).viewContact();
        }
        }
    }
业务联系人子类:

package contactlist;

    public class BusinessContact extends Contact {

    private String jobTitle;
    private String organization;

    public BusinessContact(String firstName, String lastName, String address, 
    String email, String phone, String jobTitle, String organization) {
        super(firstName, lastName, address, email, phone);
        this.jobTitle = jobTitle;
        this.organization = organization;
    }

    public String getJobTitle() {
        return jobTitle;
    }

    public void setJobTitle(String jobTitle) {
        this.jobTitle = jobTitle;
    }

    public String getOrganization() {
        return organization;
    }

    public void setOrganization(String organization) {
        this.organization = organization;
    }

    void write() {
        throw new UnsupportedOperationException("Not supported yet."); //To 
    change body of generated methods, choose Tools | Templates. 
    }

public void viewContacts() {
super.viewContacts();
System.out.println(this.getOrganization());
System.out.println(this.getJobTitle());
}
    }
同样,你也可以为其他类做些什么。我只是想提个主意

List contactlist=new ArrayList();
List<Contact> contactlist = new ArrayList<>();
看起来您的联系人列表实际上是类型为
Contact
的超类对象,因此您将无法访问子类的方法/属性,因为它不知道这些方法/属性,我想您已经尝试过了,但它会告诉您symbol not found,我相信


也许您可以创建另一个实际包含两个集合的类,一个用于
PersonalContact
BusinessContact
,然后添加一个方法将其添加到相应的列表中。这可能有点过分了,但这是我唯一能想到的,而且你仍然可以满足你的
收藏要求。希望它能帮助您,并为您提供一个起点。

您应该在两个子类中实现
toString()
方法,并使用contact.toString()查看联系人。这将在您的
viewContacts
方法中调用覆盖的方法-为什么不在for循环中使用
contactlist
的大小。例如:
for(int index=0;index
“然后附加派生类memebers”-什么?我的意思是如果你正在使用字符串生成器或其他东西来显示成员值。感谢大家帮助这个新手。我同意了你的建议,现在我已经开始工作了。谢谢当然很高兴我能帮忙。但是我明白这背后的逻辑,所以我错了,我以为我已经理解了,但是当我运行我的程序时,我仍然得到了以下信息:线程“main”中的异常java.lang.UnsupportedOperationException:尚不受支持。在contactlist.contactlist.viewContacts(contactlist.java:141)在contactlist.contactlist.main(contactlist.java:48)处