2012-11-13 36 views
0

我是計算機編程的初學者,我正在使用Java。 對於我的家庭作業,我奉命根據以下規格創建通訊錄:實現可比接口作業

  1. 首先,接觸被定義爲元組:名字,姓氏,phoneNumber的和電子郵件。

  2. 您將創建一個Contact類,它允許獲取和設置這些變量以及toString()方法和equals()方法。 Contact類應該實現Comparable接口。

  3. 您將創建一個類ArrayOperation與排序實現Comparable接口對象的一維數組的靜態方法

  4. 接下來,ContactBook類應該能夠搜索,創造和生產的String與所有排序的聯繫人。

  5. 一個主類(可以任意調用它)應該提供一個菜單,詢問要創建多少個聯繫人,然後提供上述三個選項。

  6. 添加時,來自用戶的輸入被收集並且方法ContactBook.addContact(Contact c)將該聯繫人存儲在內存中。

  7. 如果用戶正在搜索,程序會詢問用戶所有的聯繫信息,並使用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; 
    } 
} 
  • 我每次編譯代碼時,編譯器顯示說,即使它不應該是 抽象 我的課不是抽象的一個錯誤。
  • 此外,我坦率地不知道如何處理compareTo()方法。我 想要比較我的聯繫人類的兩個實例,但我無法 在compareTo方法中使用「this.Contact」。
  • 最後,我對compareTo()方法返回-1和1 時要比較的內容感到困惑。
+0

Comparable界面是什麼樣的? –

+0

@SeanF,[this](http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Comparable.html#compareTo \(java.lang.Object \)) –

+0

哈哈,我的那個壞。 –

回答

6

你需要使用一個通用的爲Comparable在你的類聲明,以配合您在compareTo比較對象:

public class Contact implements Comparable<Contact> { 

compareTo方法還可以使用String.compareTo()String.equals()。這裏有many examples

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方法用於相等性檢查(意思是真或假),而不是用於比較(意思是小於,等於或大於)。

實現Comparable接口的目的是讓您可以對對象進行排序,這不會對您的對象進行正確排序。