我是计算机编程的初学者,我正在使用Java。 对于我的家庭作业,我被指示根据以下规范创建联系簿:
首先,将联系人定义为元组:firstName,lastName,phoneNumber和email。
您将创建一个类Contact,它允许获取和设置这些变量以及toString()方法和equals()方法。 类Contact应实现Comparable接口。
您将使用静态方法创建一个ArrayOperation类,该方法对实现Comparable接口的一维对象数组进行排序
接下来,ContactBook类应该能够搜索,创建和生成包含所有已排序联系人的String。
主要课程(无论你想要什么)都应该提供一个菜单,询问要创建多少联系人,然后提供上述三个选项。
添加时,会收集用户的输入,并且ContactBook.addContact(Contact c)方法会将该联系人存储在内存中。
如果用户正在搜索,程序会询问用户所有联系信息,并使用equals方法搜索所需的联系人。当用户按下“q”
我无法实现Comparable接口。 这就是我到目前为止所做的:
public class Contact implements Comparable
{
private String firstName, lastName, phoneNumber, email;
public void setFirstName(String fName){firstName = fName;}
public void setLastName(String lName){lastName = lName;}
public void setPhoneNumber(String num){phoneNumber = num;}
public void setEmail(String email){this.email = email;}
public String getFirstName(){return firstName;}
public String getLastName(){return lastName;}
public String getPhoneNumber(){return phoneNumber;}
public String getEmail(){return email;}
public String toString()
{
return "First Name: " + firstName +
"\nLast Name: " + lastName +
"\nPhone Number: " + phoneNumber +
"\nEmail: " + email;
}
public boolean equals(Contact cont)
{
return this.firstName.equals(cont.firstName) &&
this.lastName.equals(cont.lastName) &&
this.phoneNumber.equals(cont.phoneNumber) &&
this.email.equals(cont.email);
}
public int compareTo(Contact cont)
{
if(this.firstName.equals(cont.firstName) &&
this.lastName.equals(cont.lastName) &&
this.phoneNumber.equals(cont.phoneNumber) &&
this.email.equals(cont.email))
return 0;
return 1;
}
}
答案 0 :(得分:6)
您需要在类声明中使用Comparable
的泛型来匹配您在compareTo
中比较的对象:
public class Contact implements Comparable<Contact> {
在String.equals()
方法中使用String.compareTo()而不是compareTo
。有many examples这个。
答案 1 :(得分:1)
compareTo
的实施没有意义:
if(this.firstName.equals(cont.firstName) &&
this.lastName.equals(cont.lastName) &&
this.phoneNumber.equals(cont.phoneNumber) &&
this.email.equals(cont.email))
return 0;
return 1;
请记住,它会返回int
(可能是-1,0或1),而不是boolean
。也可以使用.compareTo
代替.equals
。 .equals
方法用于等式检查(表示true或false),而不用于比较(表示小于,等于或大于)。
实现Comparable
接口的目的是为了对对象进行排序,而不是对对象进行正确排序。