java通讯录的简单程序

写两个classes,第一个是Contact,方法要用StringgetName(),voidsetName(String),longgetNumber,voidsetN... 写两个classes,第一个是Contact,方法要用String getName(),void setName(String),long getNumber,void setNumber(long),String getAddress(),void setAddress(String),boolean equals(Contact)。第二个class是AddressBook。
public class AddressBook {
private int totalContacts; // 现在通讯录中的总数
private int maxContacts; // 通讯录的最大值
private Contact[] contacts; // 通讯录的array

/**
* Constructor. 设定这个通讯录最初的大小为10人上限.
*/
public AddressBook() {
// TODO: 初始化 instance variables
}

/**
* 在这个contacts array的最后给这个通讯录添加联系人. 如果联系人已经存在且号码参数不为0的话,联系人的号码会更新或者地址参数不是null的话,地址会更新。.如果totalontacts达到maxContacts的值的话,在新的联系人被添加前,这个contacts array的size会乘以双倍并且maxContacts也乘以双倍。
* @param contact 要加到这个通讯录的联系人
* @return true 如果这个联系人添加成功, 否则 false;
public boolean addContact(Contact contact) {
// TODO
}

/**
* 得到一个联系通过通讯录中的名字
* @param name 要去得到的联系人名字
* @return 这个联系人, 没有的话为null
*/
public Contact getContactByName(String name) {
// TODO
}

/**
* 检查是否联系人已经存在
* @param contact 要去检查的contact
* @return true 如果这个联系人被找到,否则false
*/
public boolean contains(Contact contact) {
// TODO
}

public void printAddressBook() {
for (int i = 0; i < this.totalContacts; i++) {
System.out.printf("Name: %s%n", this.contacts[i].getName());
System.out.printf("Number: %d%n", this.contacts[i].getNumber());
System.out.printf("Address: %s%n%n", this.contacts[i].getAddress());
}
}
}
在AddressBook中还有一个方法!
* 从通讯录中移除一个指定的联系人,之后把其他的入口左移,这样在联系人间就没有空隙了,For example:
*
* before -> {C1, C2, C3, C4, C5, C6, C7, C8, C9, null}
* remove C6
* after -> {C1, C2, C3, C4, C5, C7, C8, C9, null, null}
*
* @param contact 要移除的联系人,
* @return true 如果这个联系人被成功移除了,否则false;
*/
public boolean removeContact(Contact contact) {
// TODO
}
展开
 我来答
yugi111
推荐于2016-06-13 · TA获得超过8.1万个赞
知道大有可为答主
回答量:5.1万
采纳率:70%
帮助的人:1.3亿
展开全部
import java.util.Arrays;

public class AddressBook
{
private int totalContacts; // 现在通讯录中的总数

private int maxContacts; // 通讯录的最大值

private Contact[] contacts; // 通讯录的array

/**
 * Constructor. 设定这个通讯录最初的大小为10人上限.
 */
public AddressBook()
{
totalContacts = 0;
maxContacts = 10;
contacts = new Contact[totalContacts];
}

/**
 * 得到一个联系通过通讯录中的名字
 * 
 * @param name
 *            要去得到的联系人名字
 * @return 这个联系人, 没有的话为null
 */
public Contact getContactByName(String name)
{
for(int i = 0; i < totalContacts; i++)
{
Contact c = contacts[i];
if(name.equals(c.getName()))
{
return c;
}
}
return null;
}

/**
 * 在这个contacts array的最后给这个通讯录添加联系人.
 * 如果联系人已经存在且号码参数不为0的话,联系人的号码会更新或者地址参数不是null的话,地址会更新。.
 * 如果totalContacts达到maxContacts的值的话,在新的联系人被添加前,这个contacts
 * array的size会乘以双倍并且maxContacts也乘以双倍。
 * 
 * @param contact
 *            要加到这个通讯录的联系人
 * @return true 如果这个联系人添加成功, 否则 false;
 */
public boolean addContact(Contact contact)
{
for(int i = 0; i < contacts.length; i++)
{
Contact ct = contacts[i];
if(ct.equals(contact))
{
if(ct.getNumber() != 0)
{
ct.setNumber(contact.getNumber());
}
if(null != ct.getAddress())
{
ct.setAddress(contact.getAddress());
}
return true;
}
}
if(totalContacts == maxContacts)
{
totalContacts *= 2;
maxContacts *= 2;
}
Contact[] cs = new Contact[totalContacts + 1];
System.arraycopy(contacts, 0, cs, 0, totalContacts);
cs[cs.length - 1] = contact;
contacts = cs;
totalContacts++;
return true;
}

/**
 * 检查是否联系人已经存在
 * 
 * @param contact
 *            要去检查的contact
 * @return true 如果这个联系人被找到,否则false
 */
public boolean contains(Contact contact)
{
for(int i = 0; i < totalContacts; i++)
{
if(contacts[i].equals(contact))
{
return true;
}
}
return false;
}

public void printAddressBook()
{
for(int i = 0; i < totalContacts; i++)
{
System.out.println(contacts[i]);
}
}

/**
 * 在AddressBook中还有一个方法! <br>
 * 从通讯录中移除一个指定的联系人,之后把其他的入口左移,这样在联系人间就没有空隙了,<br>
 * For example: <br>
 * before -> {C1, C2, C3, C4, C5, C6, C7, C8, C9, null} remove C6 <br>
 * after -> {C1, C2, C3, C4, C5, C7, C8, C9, null, null}
 * 
 * @param contact
 *            要移除的联系人,
 * @return true 如果这个联系人被成功移除了,否则false;
 */
public boolean removeContact(Contact contact)
{
if(totalContacts == 0)
{
return false;
}
for(int i = 0; i < totalContacts; i++)
{
Contact ct = contacts[i];
if(ct.equals(contact))
{
Contact[] cs = new Contact[totalContacts];
System.arraycopy(contacts, 0, cs, 0, i);
System.arraycopy(contacts, i + 1, cs, i, cs.length - i - 1);
contacts = cs;
totalContacts--;
return true;
}
}
return false;
}

@Override
public String toString()
{
return String.format("AddressBook [totalContacts=%s, maxContacts=%s, contacts=%s]", totalContacts, maxContacts,
    Arrays.toString(contacts));
}
}

//--------------------------------------------------

public class Contact
{
private String name;

private long number;

private String address;

public String getName()
{
return name;
}

public void setName(String name)
{
this.name = name;
}

public long getNumber()
{
return number;
}

public void setNumber(long number)
{
this.number = number;
}

public String getAddress()
{
return address;
}

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

@Override
public boolean equals(Object obj)
{
if(!(obj instanceof Contact))
{
return false;
}
Contact contact = (Contact) obj;
if(this.getName().equals(contact.getName())
        &&
        this.getAddress().equals(contact.getAddress())
        &&
        this.getNumber() == contact.getNumber())
{
return true;
}
return false;
}

@Override
public String toString()
{
return String.format("Contact [name=%s, number=%s, address=%s]", name, number, address);
}
}

//---------------------------------------------

public class Test
{
public static void main(String[] args)
{
AddressBook ab = new AddressBook();
for(int i = 0; i < 10; i++)
{
Contact contact = new Contact();
int x = i + 1;
contact.setName("C" + x);
contact.setAddress("china");
contact.setNumber(x);
ab.addContact(contact);
}
System.out.println(ab);
Contact c = new Contact();
c.setName("C6");
c.setAddress("china");
c.setNumber(6);
ab.removeContact(c);
System.out.println(ab);
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式