在java中显示联系人列表程序中的联系人
我是编程和面向对象设计的新手。这是我完成学士学位(非编程)的最后一个要求。我对如何使面向对象工作有点困惑,我所看到的似乎都没有帮助。任务是创建一个使用继承、多态性和集合的联系人列表。我需要一个联系人列表,其中存储两种类型的联系人:商务和个人。我需要提示1添加联系人,然后要求1提供个人信息或要求2提供业务信息。提示2将允许用户显示所选联系人的输出,提示3将退出 我构建了以下类和子类。我很确定这些类是正确构建的,但是在添加了任何一种类型的联系人之后,当我选择2查看时,我只能看到来自超级类的信息,而不能看到子类的信息(即:职务和组织或出生日期)。任何帮助都是很棒的,我只需要完成这一步,然后我将很高兴地把编程留给那些知道自己在做什么的人 我为这篇冗长的帖子道歉,但我想我应该展示所有的东西 这是我的主要课程:在java中显示联系人列表程序中的联系人,java,Java,我是编程和面向对象设计的新手。这是我完成学士学位(非编程)的最后一个要求。我对如何使面向对象工作有点困惑,我所看到的似乎都没有帮助。任务是创建一个使用继承、多态性和集合的联系人列表。我需要一个联系人列表,其中存储两种类型的联系人:商务和个人。我需要提示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)处