2011-03-02 81 views
1

這是我收到的錯誤: 錯誤:類型客戶必須實現繼承的抽象方法java.lang.Comparable.compareTo(客戶)想不通編譯錯誤進行簡單的Java應用程序

我將它與我做的一些實驗工作進行比較,看起來完全一樣,但編譯得很好。我不確定這裏發生了什麼事。

這裏是有問題的代碼段,順便說一下,寫我的教授:

class Customer implements Comparable<Customer> 
{ 
String name; 
double purchase; 
double rebate; 

public Customer(String n, double p, double r) 
{ name=n; 
    purchase=p; 
    rebate=r; 
} //end Constructor 

public Customer(String n) 
{ 
    name=n; 
} //end Constructor 

public String toString() 
{ 
    return String.format("%-20s%10.2f%10.2f", name, purchase, rebate); 
} 

/* 
    Here, define the method comparedTo of the Comparable 
    interface so that an array of Customer objects can 
    be sorted by customer name 
*/ 
public int comparedTo(Customer a) 
{ 
return this.name.compareTo(a.name); 
} //end comparedTo 

} //end class Customer 

哦,這裏有夾雜物包括教授:

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.Arrays; 
import java.util.Comparator; 
import java.util.Scanner; 

你的幫助是很大的不勝感激!

+0

@Lish:歡迎使用Code Review。本網站用於審覈工作代碼,而不是解決編譯問題。遷移到StackOverflow。 Ack! – 2011-03-02 14:06:34

+0

Ack!對於那個很抱歉! – Lish 2011-03-02 14:10:15

回答

3

comparedTo應該是compareTo

錯誤說明了一切。 ; p

+0

Agh。我一定不能閱讀,因爲我完全沒有建立這種聯繫。我只是按照教授在問題陳述中所說的去做。雖然我們使用'compareTo()',但我們突然切換到'comparisonTo()'似乎有點奇怪。 – Lish 2011-03-02 14:08:59

0

正如Steven正確指出的那樣,您嘗試實施的方法的名稱拼寫錯誤。趕上這樣的錯誤的一個好方法是@Override註釋,像這樣:

@Override 
public int comparedTo(Customer a) 

這告訴你打算comparedTo()覆蓋在父類中聲明的方法編譯器。當編譯器沒有找到一個要重寫的comparisonTo()方法時,它會告訴你。從Java 1.6起,@Override也可用於在接口中聲明的方法。

+0

哦,很酷。下次我會記住這一點。我不知道這是可能的。 – Lish 2011-03-02 17:52:42

相關問題