我被要求编写程序的这一部分,然后按以下方式进行测试:
在main方法中添加一些语句,创建两个或三个联系人实例,将它们添加到通讯簿中,然后搜索其中的一个或两个。显示每个搜索的结果以查看它们是否被正确检索。然后删除其中一个并显示列表以确保它已被正确删除。
我不完全确定如何测试这个。我应该在主班写什么?此外,其余代码是否正确?
为Contact Class执行此操作:
在客户端软件包中创建此类。这个类应该有三个字段(一个电子邮件地址,一个全名,一个昵称)。所有这些都应该是字符串。
提供两个构造函数:一个完整构造函数(所有三个成员变量的参数),以及一个仅具有电子邮件地址参数的构造函数。第二个构造函数将其他两个字段保留为空。
添加一个toString方法(并使用@Override
注释),其工作原理如下:
Contact c1 = new Contact("jenny@gmail.com");
c2.toString() should return "jenny@gmail.com".
Contact c2 = new Contact("jenny@gmail.com", "Jennifer Abott", "jenny");
c2.toString() should return "Jennifer Abott (jenny) jenny@gmail.com".
为AddressBook类执行此操作:
ArrayList<Contact>
的单个成员变量。定义变量,不要只是声明它
你不需要构造函数。编写一个显示每个Contact实例的show方法。它没有参数,也没有返回任何内容。每行显示一个联系人,并为每行编号。像这样:
确保显示的数字从1开始,而不是从0开始。
联系班级:
package client;
public class Contact
{
private String _emailAddress;
private String _fullName;
private String _nickName;
public Contact(String emailAddress, String fullName, String nickName)
{
_emailAddress = emailAddress;
_fullName = fullName;
_nickName = nickName;
}
public Contact(String emailAddress)
{
_emailAddress = emailAddress;
}
@Override
public String toString()
{
if(_fullName == null)
{
return "<" + _emailAddress + ">";
}
else
{
return _fullName + " " + "(" + _nickName + ")" + " " + "<" + _emailAddress + ">";
}
}
}
地址簿类:
package client;
import java.util.ArrayList;
public class AddressBook
{
public ArrayList<Contact> contactList = new ArrayList<Contact>();
public void add(Contact _contact)
{
contactList.add(_contact);
}
public Contact search(String nickName)
{
for (int n=0; n < contactList.size(); n++)
{
if(contactList.get(n).equals(nickName))
{
return contactList.get(n);
}
}
return null;
}
public void remove(String nickName)
{
if(search(nickName) != null)
{
contactList.remove(search(nickName));
}
}
public void show()
{
for(int n=0; n<contactList.size(); n++)
{
System.out.println(n++ + ". " + contactList.get(n).toString());
}
}
}
我在主课程中没有太多东西,但现在是:
主要类
import java.util.ArrayList;
import client.Contact;
public class Main
{
public static void main(String[] args)
{
Contact c1 = new Contact("jeffm@engr.uconn.edu");
Contact c2 = new Contact("jeffm@engr.uconn.edu", "Jeff Meunier", "jeff");
}
}
答案 0 :(得分:0)
“向创建两个或三个联系人实例的main方法添加一些语句,将它们添加到通讯簿中,然后搜索其中的一个或两个。显示每个搜索的结果以查看它们是否被正确检索。然后删除其中一个并显示列表以确保它已被正确删除。“
如果这是你的任务,那么:
1.您创建了一些联系实例,因此已完成,但在设置了所有可用的类字段后再创建一些(后续步骤将需要这样做)
2.现在您必须创建地址簿类的实例。
AddressBook addressBook = new AddressBook();
将创建的联系人添加到地址簿
addressBook.add(c1);
addressBook.add(c2);
// other contacts
使用show方法查看一切是否正确。
addressBook.show();
尝试删除一个并再次显示可用的联系人,看看是否有效。
addressBook.remove(c1.getNickName()); // Make get method for the nickname
addressBook.show();
然后搜索具有特定名称的联系人,将其分配给新的联系人对象,然后从中打印一些内容以确认该对象是正确的。
在这里,您的逻辑可能会中断,因为您的搜索不会涵盖您拥有多个具有相同名称的联系人的可能性。因此,您应该返回找到的联系人列表而不是一个联系人。实现它并再次搜索(确保搜索具有唯一和非唯一名称的对象,以便可以接受测试)。
您的搜索测试最终会看起来像这样:
List <Contact> contacts = addressBook.search("John");
for(Contact contact in contacts) {
System.out.println(contact.toString());
}
现在,由于您的删除方法取决于搜索,因此您必须稍微更改一下。执行此操作时,请再次测试remove方法。
完成每一步,直到它完好无损并完成。
P.S。您可能希望在不同的测试打印之间打印一些描述,因此您可以在输出中清楚地看到结果