[英]Implementing the Comparable Interface homework
我是計算機編程的初學者,並且正在使用Java。 對於我的家庭作業,我被指示要根據以下規范創建一個通訊錄:
首先,將聯系人定義為元組:名字,姓氏,電話號碼和電子郵件。
您將創建一個Contact類,它允許獲取和設置這些變量以及toString()方法和equals()方法。 Contact類應實現Comparable接口。
您將使用靜態方法創建一個ArrayOperation類,該方法對實現Comparable接口的對象的一維數組進行排序
接下來,ContactBook類應該能夠搜索,創建和生成具有所有排序后的Contacts的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;
}
}
您需要在類聲明中使用泛型Comparable
來匹配在compareTo
中進行比較的對象:
public class Contact implements Comparable<Contact> {
還可以在compareTo
方法中在String.equals()
使用String.compareTo() 。 有很多這樣的例子 。
您對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
方法用於相等性檢查(表示真或假),而不用於比較(表示小於,等於或大於)。
實現Comparable
接口的目的是使您可以對對象進行排序,而不會對對象進行正確的排序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.