簡體   English   中英

實施可比接口作業

[英]Implementing the Comparable Interface homework

我是計算機編程的初學者,並且正在使用Java。 對於我的家庭作業,我被指示要根據以下規范創建一個通訊錄:

  1. 首先,將聯系人定義為元組:名字,姓氏,電話號碼和電子郵件。

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

  3. 您將使用靜態方法創建一個ArrayOperation類,該方法對實現Comparable接口的對象的一維數組進行排序

  4. 接下來,ContactBook類應該能夠搜索,創建和生成具有所有排序后的Contacts的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()方法。 我想比較我的Contact類的兩個實例,但是我不能在compareTo方法中使用“ this.Contact”。
  • 最后,我對為compareTo()方法返回-1和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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM