【发布时间】:2018-04-22 21:46:17
【问题描述】:
我希望能够使用Contact 类的ContactArrayList 显示联系人列表中的信息。
我有一个 ContactArrayList 类,其中包含一个 Contact 类对象。在ContactArrayList 类中,我有一个add、remove、size、isEmpty 等。该类的方法将用于ContactArrayList 类中的ContactArrayList 以及其他方法。
在我的主/驱动程序类中,我有一个 ContactArrayList 类的对象,并创建了一个“用户”对象和几个 Contact 类的“罐头”对象。
我的问题:
当用户选择显示所有联系人的信息时,包括罐头对象和用户对象,我尝试使用增强的 for 循环 W/ContactArrayList 类的 toString 方法,但因为我使用的是增强的当我想使用ContactArrayList 类toString 时,for 循环使用Contact 类“迭代器”变量来遍历并显示它使用Contact toString 的信息。
ContactArrayList:
import java.util.ArrayList;
public class ContactArrayList
{
ArrayList <Contact> contactArray = new ArrayList <Contact> ();
String toStringM = " ";
public Contact set(int index, Contact element)
{
return contactArray.set(index, element);
}
public Boolean add(Contact element)
{
return contactArray.add(element);
}
public Contact remove(int index)
{
return contactArray.remove(index);
}
public int size()
{
return contactArray.size();
}
public void clear()
{
contactArray.clear();
}
public boolean isEmpty()
{
return contactArray.isEmpty();
}
@Override
public String toString()
{
for(int i = 0; i < contactArray.size(); i++)
{
toStringM = "Displaying all contacts and information: "
+ contactArray.get(i).getName() +
contactArray.get(i).getLastName() +
contactArray.get(i).getPhoneNumber()+
contactArray.get(i).getEmailAddress();
}
return toStringM;
}
public void sort()
{
ArrayList <Contact> tempSort = new ArrayList <> ();
while(!contactArray.isEmpty())
{
int index = 0;
for (int i = 1; i < contactArray.size(); i++)
{
if(contactArray.get(i).compareTo(contactArray.get(index)) == -1)
{
index = i;
}
}
tempSort.add(contactArray.get(index));
contactArray.remove(index);
}
contactArray = tempSort;
}
public void addContact(String passedString)
{
ArrayList <Contact> addContact = new ArrayList <Contact> ();
for(Contact c : contactArray)
{
if (c.getName().indexOf(passedString) > -1)
{
addContact.add(c);
}
}
}
public void searchAndRemove (String passedString)
{
for(int i = 0; i < contactArray.size(); i++)
{
if (contactArray.get(i).getName().indexOf(passedString) > -1)
{
contactArray.remove(i);
}
}
}
}
Main:
import java.util.ArrayList;
import java.util.Scanner;
public class HomeWork10 {
public static void main(String[] args)
{
userInput();
}
public static void userInput()
{
Scanner in = new Scanner(System.in);
ContactArrayList cal1 = new ContactArrayList ();
Contact c1 = new Contact(); //User Input Object
//"Canned" refernce Objects
Contact c2 = new Contact("James", "Conney", "7608949843",
"jamesConney@seeMe.com");
Contact c3 = new Contact("JJ", "Jim", "7608939836",
"theStuff@gmail.com");
Contact c4 = new Contact("Jimmer", "ConBoy", "7608040500",
"jimConBoy@seeMe.com");
//Adding canned objects to the ArrayList
cal1.add(c2);
cal1.add(c3);
cal1.add(c4);
String name = " ";
String lastName = " ";
String phoneNumber = " ";
String emailAddress = " ";
String yesOrNo = " ";
int userInput = 0;
boolean userContinues = true;
do
{
System.out.println("Please enter 1, 2, 3, 4, or 5 for the following"
+ " options");
System.out.println("1. Add a new Contact, 2. display all contacts, "
+ "3. search for a contact and remove them,"
+ " 4. Sort the Contact LIST by name, 5. Quit: ");
userInput = in.nextInt();
in.nextLine();
switch(userInput)
{
case 1:
System.out.println("Please enter the new contact info"
+ "(Name, lastName, phoneNumber and emailAddress): ");
name = in.nextLine();
lastName = in.nextLine();
phoneNumber = in.nextLine();
emailAddress = in.nextLine();
c1 = new Contact(name, lastName, phoneNumber, emailAddress);
cal1.add(c1);
break;
case 2:
System.out.println(cal1.toString());
break;
case 3:
System.out.println("Enter a contact to search for and remove: ");
name = in.nextLine();
cal1.searchAndRemove(name);
break;
case 4:
System.out.println("Sorting the contact list by name "
+ "and displaying it to the screen.");
cal1.sort();
System.out.println(cal1.toString());
break;
case 5:
System.out.println("Goodbye");
System.exit(0);
break;
default:
System.out.println("Invalid entry, try again.");
break;
}
System.out.println("Would you like to continue ? (Y/N): ");
yesOrNo = in.next();
if(yesOrNo.equalsIgnoreCase("Y"))
{
System.out.println("");
}
else
{
System.out.println("Goodbye");
userContinues = false;
}
}while(userContinues);
}
}
Contact:
import java.util.Scanner;
public class Contact implements Comparable
{
private static String name = " ";
private static String lastName = " ";
private static String phoneNumber = " ";
private static String emailAddress = " ";
public Contact()
{
//Default constructor
}
public Contact(String passedName, String passedLastName,
String passedPhoneNumber, String passedEmailAddress)
{
this.name = passedName;
this.lastName = passedLastName;
this.phoneNumber = passedPhoneNumber;
this.emailAddress = passedEmailAddress;
}
//Setter Methods
public void setName(String passedName)
{
this.name = passedName;
}
public void setLastName(String passedLastName)
{
this.lastName = passedLastName;
}
public void setPhoneNumber(String passedPhoneNumber)
{
this.phoneNumber = passedPhoneNumber;
}
public void setEmailAddress(String passedEmailAddress)
{
this.emailAddress = passedEmailAddress;
}
//Getter Methods
public String getName()
{
return this.name;
}
public String getLastName()
{
return this.lastName;
}
public String getPhoneNumber()
{
return this.phoneNumber;
}
public String getEmailAddress()
{
return this.emailAddress;
}
//Methods
public String toString()
{
return "Name, Last name, phone number, and email in order: "
+ this.name +" " + this.lastName + " " + this.phoneNumber +
" " + this.emailAddress;
}
public int compareTo(Object other)
{
Contact passedContact = (Contact) other;
if(this.lastName.compareTo(passedContact.lastName) == 0)
{
return this.name.compareTo(passedContact.name);
}
else
{
return this.lastName.compareTo(passedContact.lastName);
}
}
public static String userInput()
{
Scanner in = new Scanner(System.in);
System.out.println("Please enter your name, last name,"
+ " phone number, and email address: ");
Contact.name = in.nextLine();
Contact.lastName = in.nextLine();
Contact.phoneNumber= in.nextLine();
Contact.emailAddress = in.nextLine();
Contact newContact = new Contact(name, lastName, phoneNumber, emailAddress);
return newContact.getName() + newContact.getLastName() +
newContact.getPhoneNumber() + newContact.getEmailAddress();
}
public boolean equals(Object anObject)
{
//equals method which trys to check if the object to be ,ade is legdible
if (anObject == null || getClass() != anObject.getClass())
{
return false ;
}
Contact otherContact = (Contact) anObject ;
return (this.name.equals(otherContact.getName())) &&
this.lastName.equals(otherContact.getLastName()) &&
this.phoneNumber.equals(otherContact.getPhoneNumber()) &&
this.emailAddress.equals(otherContact.getEmailAddress());
}
}
输出:
Please enter 1, 2, 3, 4, or 5 for the following options 1. Add a new Contact, 2. display all contacts, 3. search for a contact and remove them, 4. Sort the Contact LIST by name, 5. Quit: 1 Please enter the new contact info(Name, lastName, phoneNumber and emailAddress): Mike Dim 123456789 email Would you like to continue ? (Y/N): y Please enter 1, 2, 3, 4, or 5 for the following options 1. Add a new Contact, 2. display all contacts, 3. search for a contact and remove them, 4. Sort the Contact LIST by name, 5. Quit: 2 Name, Last name, phone number, and email in order: Mike Dim 123456789 email Name, Last name, phone number, and email in order: Mike Dim 123456789 email Name, Last name, phone number, and email in order: Mike Dim 123456789 email Name, Last name, phone number, and email in order: Mike Dim 123456789 email Would you like to continue ? (Y/N):
总的来说,我会继续解决这个问题,它可能很简单,但希望有人指出显而易见的事情。如果您需要更多有关 ContactArrayList 类、Contact 类或 Main/driver 类的信息,请告诉我!
【问题讨论】:
-
能否请您出示
ArrayList类的完整代码? -
我无法重现该问题..我认为缺少一些重要的代码..您要添加
Main的其余部分吗?也许Contact也是?