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

标签 java

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

我构建了以下类和子类。我很确定这些类构建正确,但在添加任一类型的联系人后,当我选择 2 以便查看时,我只能看到父类(super class)的信息,而看不到子类的信息(即:职位和组织或出生日期)。任何帮助都会很棒,我只需要解决这个问题,然后我很乐意将编程留给那些知道自己在做什么的人。

我为这么长的帖子表示歉意,但我认为我应该展示所有内容。

这是我的主要类(class):

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

联系类(class):

package contactlist;

public class Contact {
    private String firstName;
    private String lastName;
    private String address;
    private String email;
    private String phone;

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

    public String getfirstName() {
        return this.firstName;
    }

    public String setfirstName(){
        return (this.firstName = firstName);
    }

    public String getlastName() {
        return this.lastName;
    }

    public String setlastName(){
        return (this.lastName = lastName);
    }

    public String getAddress() {
        return this.address;
    }

    public String setAddress(){
        return (this.address = address);
    }

    public String getEmail() {
        return this.email;
    }

    public String setEmail(){
        return (this.email = email);
    }

    public String getPhone() {
        return this.phone;
    }

    public String setPhone(){
        return (this.phone = phone);
    }

    String getFirstName() {
        return firstName;
    }

    String getLastName() {
        return lastName;
    }

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

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

    String getDateOfBirth() {
        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.
    }
}

最佳答案

首先,基类中不应该有组织、职务和出生日期的 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 Contact {
    private String firstName;
    private String lastName;
    private String address;
    private String email;
    private String phone;

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

    public String getfirstName() {
        return this.firstName;
    }

    public String setfirstName(){
        return (this.firstName = firstName);
    }

    public String getlastName() {
        return this.lastName;
    }

    public String setlastName(){
        return (this.lastName = lastName);
    }

    public String getAddress() {
        return this.address;
    }

    public String setAddress(){
        return (this.address = address);
    }

    public String getEmail() {
        return this.email;
    }

    public String setEmail(){
        return (this.email = email);
    }

    public String getPhone() {
        return this.phone;
    }

    public String setPhone(){
        return (this.phone = phone);
    }

    String getFirstName() {
        return firstName;
    }

    String getLastName() {
        return lastName;
    }

public void viewContacts() {
System.out.println(this.getfirstName());
System.out.println(this.getlastName());
.....
}

业务联系人子类:

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

类似地,你可以为其他类(class)做同样的事情。我只是提供一个想法。

关于java - 在java中显示联系人列表程序中的联系人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28459260/

相关文章:

java - 如何快速恢复随机交换 2 个元素的递增数组?

Java native 接口(interface) GetStringUTFChars fatal error

java - 无法从java程序: Unable to relay for abc@wipro. com发送电子邮件

java - Eclipse J2EE Preview 从 .metadata 目录而不是 m2e-wtp/web-resources 读取未过滤的资源

java - 为什么 Java 中有 2 个 boolean 类型运算符?

java - 调用 startRecording() 方法时 Android AudioRecord 失败

java - 我可以拥有什么作为 Maven Artifact 以及如何使用它?

java - 当 JFrame 包含 GridLayout 时,我可以为 JFrame 设置特定的边框大小吗?

java - 使用 CriteriaBuilder 从子查询中的路径中选择?

java - 手动将 LWUIT 插件添加到 netbeans