静态和非静态

时间:2015-04-24 16:09:38

标签: java static non-static

在“[Contact.getName()]”的editContact中,我收到错误:

  • 无法从类型中对非静态方法getName()进行静态引用  接触
  • 类型不匹配:无法从String转换为int

为什么会这样,我该如何解决这个问题?谢谢!

  public class ContactList
{
private final int MAX_NUMBER_OF_CONTACTS = 100;
private Contact[] contactList = new Contact[MAX_NUMBER_OF_CONTACTS];

public void addContact(String contactName, String contactNumber,
        String contactEmail, String contactAddress)
{
    if (Contact.getContactCount() >= MAX_NUMBER_OF_CONTACTS)
    {
        System.err
                .println("Eror: You have too many contacts, delete one of them you fool!");
        return;

public int editContact(String contactToEdit)
{
    if (editContact(contactToEdit) < 0)

    {
        return -1;
    }       

    else 
        contactList[Contact.getName()].setName("");
        contactList[Contact.getPhoneNumber()].setPhoneNumber("");
        contactList[Contact.getEmail()].setEmail("");
        contactList[Contact.getAddress()].setAddress("");

}
}

2 个答案:

答案 0 :(得分:1)

下面:

contactList[Contact.getName()]

您正在尝试使用String来访问数组的索引。数组基于int索引。

您似乎需要在阵列中搜索要更新的Contact实例。您可以使用for循环执行此操作:

int index = 0;
for (Contact contact : contactList) {
    //use this or another condition
    if (contact.getName().equals(contactToEdit)) {
        //update this instance of contact
        contact.setName(...);
        return index;
    }
    index++;
}

答案 1 :(得分:0)

我猜您正在尝试清除contactToEdit

的联系方式
int contactIdToEdit = findContactIdForName(contactToEdit);
if (contactIdToEdit < 0)
    return;
Contact c = contactList[contactIdToEdit];
c.setName("");
c.setPhoneNumber("");
c.setEmail("");
c.setAddress("");